使用docker、docker-compose部署微服务

使用docker、docker-compose部署微服务

  • 一、使用docker部署
    • 1、准备
    • 2、上传jar包
    • 3、编写dockerfile文件
    • 3、构建镜像和容器
  • 二、使用docker-compose部署
    • 1、准备服务的jar包和dockerfile文件
    • 2、编写docker-compose.yml文件
    • 3、docker-compose常用命令
      • (1)、前台创建镜像并启动容器
      • (2)、后台创建镜像并启动容器
      • (3)、查看启动的容器
    • 4、停止服务(含删除)
    • 5、启动服务容器
    • 6、关闭服务容器
    • 7、重启服务容器

一、使用docker部署

1、准备

这里已经在docker安装并启动好了Redis、nacos,配置好了“ruoyi-gateway-prod.yml”文件。

注意如果配置文件中有Redis、MySQL、nacos这些的连接信息,需要把IP地址改为服务器的公网地址或者内网地址,不会连接不到。
在这里插入图片描述

2、上传jar包

我这里以微服务版若依的网关服务为例,上传到指定目录。

在这里插入图片描述

3、编写dockerfile文件

官方文档:

https://docs.docker.com/engine/reference/builder/

英文的看起来有些吃力,若依这里有中文的教程

在这里插入图片描述

这是若依的文档地址:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile

先获取构建镜像所需要的基础镜像,也就是jdk镜像,先看看有哪些jdk镜像

docker search openjdk

在这里插入图片描述
这里获取的是jdk8的镜像

docker pull openjdk:8-jre

在这里插入图片描述
我之前获取过,第一次获取可能慢一点。

再创建一个名为dockerfile的文件,文件名可以自定义,一般都为dockerfile,内容如下:
在这里插入代码片

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"# 创建目录
RUN mkdir -p /home/jar
# 指定路径,后面运行的jar包就是在这个目录
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar# 启动网关服务jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]

上传到和jar包同一目录

在这里插入图片描述

假如要复制多个文件到容器,可以这样

在这里插入图片描述

3、构建镜像和容器

在当前目录下构建镜像,注意后面的“.”不是多余的,命令如下:

docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .

解释:

-f:后面接的是 dockerfile 文件的路径
-t:为构建的镜像打上标签,就是构建的镜像名称

注意:

执行构建镜像的命令要在dockerfile文件所在目录,因为dockerfile文件的“COPY” 命令只能在相对于dockerfile文件的相对目录,使用宿主机的绝对目录构建会报错。

执行结果如下:

在这里插入图片描述

构建成功,因为我前面已经构建成功过了,可能会和第一次构建不太一样。

接下来启动镜像,命令如下:

docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway

解释:

–name:后面接的是容器名称,我这里和镜像名称一样
-p:后面接的是宿主机和容器的端口映射,“:”前为服务器端口,“:”后为seata容器端口
最后面的是镜像名称

可以看到容器已经跑起来了。

在这里插入图片描述

二、使用docker-compose部署

使用docker-compose部署服务是使用docker部署基础上,增加docker-compose.yml文件统一管理服务容器,实现一个命令启动或关闭所有服务容器,所以要使用docker-compose部署,还是得先学会使用docker部署,是一种前期麻烦后期舒服的部署方式。

若依也有相关的教程:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose

1、准备服务的jar包和dockerfile文件

在保留前面若依的gateway的jar包和dockerfile文件基础上,增加auth的jar包和dockerfile文件,auth的dockerfile跟gateway大同小异,具体如下:

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"# 创建目录
RUN mkdir -p /home/jar
# 指定路径
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 启动系统服务
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]

在这里插入图片描述

上传到指定的文件夹

在这里插入图片描述

在这里插入图片描述

2、编写docker-compose.yml文件

官网上docker-compose.yml文件对应的docker版本
在这里插入图片描述

这是我的docker版本:

在这里插入图片描述

所以我的docker-compose.yml的文件版本是3.8。

文件中只有gateway和auth相关的内容,具体如下:

# 描述 Compose 文件的版本信息
version : '3.8'# 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
services:ruoyi-gateway:  # 服务名称,跟构建镜像名称有关,假如image值为空,那么生成的镜像名称为“docker-compose.yml文件所在目录名称_ruoyi-gateway”,我放在jar目录,生成的镜像名称就是jar_ruoyi-gatewayimage: ruoyi-gateway  # 构建镜像名称container_name: ruoyi-gateway   # 容器名称build:context: ./gateway    # 构建镜像的jar包和dockerfile文件所在的目录(相对于docker-compose.yml文件,我这里gateway目录是跟docker-compose.yml文件同一目录)dockerfile: dockerfile  # 构建网关镜像的文件名称ports:- "8010:8010"   # 构建容器端口号,“:”前为宿主机端口,“:”后为容器端口ruoyi-auth:image: ruoyi-authcontainer_name: ruoyi-authbuild:context: ./authdockerfile: dockerfileports:- "9200:9200"

文件写好后上传到指定目录

在这里插入图片描述

3、docker-compose常用命令

(1)、前台创建镜像并启动容器

类似使用 java -jar 命令启动jar包,注意要在docker-compose.yml文件所在目录执行,命令如下:

docker-compose up

在这里插入图片描述
窗口一旦关闭服务就停止了,初次启动服务的时候可以使用,最左边是服务名称,如果每个服务都没有看到日志报错就代表启动成功了。

在这里插入图片描述
Ctrl+C退出,但即使关闭了,创建的镜像和容器还存在

在这里插入图片描述

(2)、后台创建镜像并启动容器

也要在docker-compose.yml文件所在目录执行,命令如下:

docker-compose up -d

在这里插入图片描述

也可以指定docker-compose.yml文件的路径,命令如下:

docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d

在这里插入图片描述

执行不会打印每个服务启动的日志,需要查看日志可以使用如下命令进行查看

docker-compose logs

在这里插入图片描述
如果只想看ruoyi-auth服务的日志,可以使用如下命令

docker-compose logs ruoyi-auth

在这里插入图片描述

(3)、查看启动的容器

可以查看docker-compose.yml文件启动的所有容器,命令如下:

docker-compose ps

在这里插入图片描述

也可以指定服务名称,比如执行看ruoyi-auth有没有启动,命令如下:

docker-compose ps ruoyi-auth

在这里插入图片描述

注意只能在docker-compose.yml文件所在目录执行,在其他目录执行会报错

在这里插入图片描述

4、停止服务(含删除)

停止并删除所有服务的容器,不删除镜像,命令如下:

docker-compose down

可以看到镜像还在,但对应的容器被删除了。

在这里插入图片描述
查看服务容器所对应的镜像,命令如下:

docker-compose images

在这里插入图片描述

停止并删除工程中所有服务的容器、网络、镜像,命令如下:

docker-compose down --rmi all

在这里插入图片描述
如果重新上传了jar包就可以使用这个方式停止。

5、启动服务容器

启动工程中所有服务的容器,命令如下:

docker-compose start

在这里插入图片描述
也可以在上面命令的基础上加上容器名称,启动指定的容器,比如我只启动gateway容器,命令如下:

docker-compose start ruoyi-gateway

在这里插入图片描述

6、关闭服务容器

关闭工程中所有服务的容器,命令如下:

docker-compose stop

在这里插入图片描述
也可以在上面命令的基础上加上容器名称,关闭指定的容器,比如我只关闭auth容器,命令如下:

docker-compose stop ruoyi-auth

在这里插入图片描述

7、重启服务容器

重启工程中所有服务的容器,命令如下:

docker-compose restart

在这里插入图片描述

也可以在上面命令的基础上加上容器名称,重启指定的容器,比如我只重启auth容器,命令如下:

docker-compose restart ruoyi-auth

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux用户与组管理(01)(六)

目录 前言 一、用户管理 1、 概述 2、用户操作 总结 前言 今天学习的是新知识,Linux用户与组管理,刚开始就是简单的一些概念、命令等,今天学习的内容也都是重点哦!希望我们可以一起学习,共同发展和进步。 提示&#x…

linux 发行版中在容器内访问热插拔 U 盘的分区内容

前言 在 UOS 如何实现自动将 U 盘挂载到指定目录中?这篇文章中,我描述了 UOS 自动挂载 U 盘到指定目录的方式,现有的发行版处理逻辑大致相同。 当挂载位置确定后,容器内的业务逻辑要访问 U 盘分区中的内容,看上去只需…

【Linux】以太网协议以及MTU

以太网协议 数据链路层的功能以太网的数据格式MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对TCP协议的影响 数据链路层的功能 数据链路层的主要功能是:控制链路。包括数据链路的建立、链路的维护和释放。MAC寻址也是它的功能,寻址是指计算机网卡的MAC地…

二分图-染色法-dfs

1.判断一个图是否是二分图当且仅当图中不包含奇数环 2. dfs当前边为1 他的临边为2 看是否满足条件 3. 注意图有可能不是连通图 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays;public class BinaryG…

无涯教程-JavaScript - CUBERANKEDMEMBER函数

描述 CUBERANKEDMEMBER函数返回集合中的第n个或排序的成员。 使用此功能可返回一组中的一个或多个元素,如销售业绩最好的人或前十名的学生。 语法 CUBERANKEDMEMBER (connection, set_expression, rank, [caption])争论 Argument描述Required/OptionalconnectionThe name …

vscode搭建springboot开发环境

前言 idea好用到但是收money,eclipse免费但是界面有点丑,所以尝试使用vscode开发springboot 提前准备 安装jdk,jdk需要大于11 安装vscode 安装maven 安装插件 主要是下面的插件 Extension Pack for JavaSpring Boot Extension PackDepe…

【Java 基础篇】Java 数组使用详解:从零基础到数组专家

如果你正在学习编程,那么数组是一个不可或缺的重要概念。数组是一种数据结构,用于存储一组相同类型的数据。在 Java 编程中,数组扮演着非常重要的角色,可以帮助你组织、访问和操作数据。在本篇博客中,我们将从零基础开…

前端高性能渲染 — 虚拟列表

虚拟列表,实际上就是在首屏加载的时候,只加载可视区域内需要的列表项,当滚动发生时,动态通过计算获得可视区域内的列表项,并将非可视区域内存在的列表项删除。该技术是解决渲染大量数据的一种解决方法。 实现虚拟列表&…

编译Micropython固件For树莓派Raspberry Pi Pico

1. 前言 由于想把自己编写的py文件打包的固件中,所以记录下如何编译micropython固件和打包。 2. 编译 最简单的方式就是在你的树莓派上进行,我用的是RP Pi2 下载所需文件: $ cd ~/ $ mkdir pico $ cd pico $ git clone -b pico https://gi…

THIRD PROGRAMMING CONTEST 2023 ALGO(AtCoder Beginner Contest 318)

THIRD PROGRAMMING CONTEST 2023 ALGO&#xff08;AtCoder Beginner Contest 318&#xff09; A - Full Moon 思路&#xff1a;模拟 直接模拟即可&#xff0c;找到以m开始每一次可以调p的距离终点为n的次数 #include<bits/stdc.h> using namespace std; int main(){in…

python 美国总统身高统计与分析

美国总统身高统计与分析 1.安装依赖2.下载数据集3.数据处理4.结果展示 1.安装依赖 pip install pandas pip install numpy pip install matplotlib2.下载数据集 链接&#xff1a;https://pan.baidu.com/s/1aZLtkLyvQvRLb9tJ-B1krA 提取码&#xff1a;thms –来自百度网盘超级…

Nginx安装与部署

文章目录 一,说明二,下载三,Windows下安装1,安装2,启动3,验证 四,Linux下安装1,安装2,启动3,验证 五,Nginx配置 一,说明 Nginx是一款高性能Web和反向代理服务器,提供内存少,高并发,负载均衡和反向代理服务,支持windos和linux系统 二,下载 打开浏览器,输入地址: https://ngin…

Go语言中的Panic和高阶Func详细教程案例

目录标题 一、Panic1. What is Panic?2. What should panic be used?3. Example4. Defer Calls During a Panic 延迟panic5. Recovering from a Panic 关联6. Getting Stack Trace after Recover 输出堆栈信息7. Panic, Recover and Goroutines 二、First Class Functions1. …

【数据库】MySQL基础知识全解

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于拓跋阿秀、小林coding等大佬博客进行的&#xff0c;每个知识点的修…

基于Googlenet深度学习网络的人脸身份识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... % 定义修改的范围 …

hive表向es集群同步数据20230830

背景&#xff1a;实际开发中遇到一个需求&#xff0c;就是需要将hive表中的数据同步到es集群中&#xff0c;之前没有做过&#xff0c;查看一些帖子&#xff0c;发现有一种方案挺不错的&#xff0c;记录一下。 我的电脑环境如下 软件名称版本Hadoop3.3.0hive3.1.3jdk1.8Elasti…

Hugging Face 实战系列 总目录

PyTorch 深度学习 开发环境搭建 全教程 Transformer:《Attention is all you need》 Hugging Face简介 1、Hugging Face实战-系列教程1&#xff1a;Tokenizer分词器&#xff08;Transformer工具包/自然语言处理&#xff09; Hungging Face实战-系列教程1&#xff1a;Tokenize…

浅析ARMv8体系结构:异常处理机制

文章目录 概述异常类型中断终止Abort复位Reset系统调用 异常处理流程异常入口异常返回异常返回地址 堆栈选择 异常向量表异常向量表的配置 同步异常解析相关参考 概述 异常处理指的是处理器在运行过程中发生了外部事件&#xff0c;导致处理器需要中断当前执行流程转而去处理异…

代码随想录算法训练营day48 | LeetCode 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

198. 打家劫舍&#xff08;题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台&#xff09; 思路&#xff1a;dp题除背包外的另外一类题目&#xff0c;重点不在于看前面的情况&#xff0c;而在于考虑本节点的情况。一种情况&#xf…

leetcode原题: 最小值、最大数字

题目1&#xff1a;最小值 给定两个整数数组a和b&#xff0c;计算具有最小差绝对值的一对数值&#xff08;每个数组中取一个值&#xff09;&#xff0c;并返回该对数值的差 示例&#xff1a; 输入&#xff1a;{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8} 输出&#xff1a;3&…