文章目录
前言
笔者最近使用若依微服务脚手架开发了一个企业内部工具微服务集成平台,采用阿里云云上部署方案,采用docker容器管理微服务,下面是一些搭建步骤。
一、安装docker服务引擎
使用国内镜像安装 Docker 服务
以 CentOS 7 系统为例,以下是使用国内镜像源安装 Docker 的步骤:
- 更新系统软件包
打开终端并执行以下命令来更新系统软件包列表:
sudo yum update -y
- 安装必要的依赖
安装允许 yum 使用 HTTPS 仓库所需的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加 Docker 国内镜像源
添加阿里云的 Docker 镜像源:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker 引擎
安装 Docker 社区版(CE):
sudo yum install -y docker-ce docker-ce-cli containerd.io
- 配置 Docker 国内镜像加速
创建或编辑 /etc/docker/daemon.json 文件,添加阿里云镜像加速地址。你可以登录你自己的阿里云控制台获取专属的镜像加速地址,这里以通用的国内镜像为例:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
- 重启 Docker 服务
使配置生效,重启 Docker 服务并设置为开机自启:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
- 验证 Docker 安装
运行以下命令验证 Docker 是否安装成功:
sudo docker run hello-world
二、安装 Docker Compose
由于 Docker Compose 本身是从 GitHub 下载,所以比较慢(注意你前面安装的docker引擎必须要2.0以上)
- 下载 Docker Compose
先在git hub上下载
https://github.com/docker/compose/releases/tag/v2.26.1
下载下来后再上传到linux服务器上/user/local/bin下,并改名为docker-compose
- 添加执行权限
为下载的 Docker Compose 二进制文件添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose
- 验证 Docker Compose 安装
运行以下命令验证 Docker Compose 是否安装成功:
docker-compose --version
三、docker微服务文件准备
docker文件结构
笔者用的是若依微服务版的基础框架哈,docker文件已经准备好了,但是笔者的redis、mysql、nacos、nginx等不使用docker管理,都是单独安装好的,所以就只用来管理我们的微服务jar包就好
我们打包好的各个微服务的jar包需要放置到docker对应模块下的jar文件夹中,可以手动复制进去,笔者是在每个服务的pom文件下添加了如下,做到自动复制到对应路径
<!--打包时拷贝jar文件到指定目录下,用于docker部署,如果不需要这个可以去掉这个-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>jar</type>
<destFileName>${project.artifactId}.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>../../docker/usteu/modules/system/jar</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
注意 这个里面的内容是需要自己根据路径层次和所属模块进行修改的哦
docker-compose文件
前面已经说了,只用来管理微服务jar,经过笔者的修改删除,大概如下
services:
usteu-gateway:
container_name: usteu-gateway
build:
context: ./usteu/gateway
dockerfile: dockerfile
ports:
- "8050:8050"
usteu-auth:
container_name: usteu-auth
build:
context: ./usteu/auth
dockerfile: dockerfile
ports:
- "9200:9200"
usteu-modules-system:
container_name: usteu-modules-system
build:
context: ./usteu/modules/system
dockerfile: dockerfile
ports:
- "9201:9201"
usteu-modules-order:
container_name: usteu-modules-order
build:
context: ./usteu/modules/order
dockerfile: dockerfile
ports:
- "9400:9400"
usteu-modules-gen:
container_name: usteu-modules-gen
build:
context: ./usteu/modules/gen
dockerfile: dockerfile
ports:
- "9202:9202"
usteu-modules-job:
container_name: usteu-modules-job
build:
context: ./usteu/modules/job
dockerfile: dockerfile
ports:
- "9203:9203"
usteu-modules-file:
container_name: usteu-modules-file
build:
context: ./usteu/modules/file
dockerfile: dockerfile
ports:
- "9300:9300"
volumes:
- ./usteu/uploadPath:/home/usteu/uploadPath
usteu-visual-monitor:
container_name: usteu-visual-monitor
build:
context: ./usteu/visual/monitor
dockerfile: dockerfile
ports:
- "9100:9100"
具体可参考这篇博客:docker部署若依微服务
完成上述的准备工作后,我们据可以部署到linux服务器上了,
先把这个docker文件复制到linux服务器上,笔者是直接复制到根路径下的,然后进入cd cocker/内,相关执行命令参考如下文件
#把这个docker文件复制到linux系统上的/根路径下,然后进入docker,cd docker/
========================================================================================================================
#创建微服务镜像
docker-compose build usteu-gateway usteu-auth usteu-modules-system usteu-modules-order usteu-modules-gen usteu-modules-job usteu-modules-file usteu-visual-monitor
#创建容器并启用所有服务
docker-compose up -d usteu-gateway usteu-auth usteu-modules-system usteu-modules-order usteu-modules-gen usteu-modules-job usteu-modules-file usteu-visual-monitor
========================================================================================================================
1. 直接重启所有容器(不重新构建)
docker-compose restart
========================================================================================================================
2.强制重新创建容器(镜像或配置已更新)
# 强制重新创建容器并启动(保留旧容器数据卷)
docker-compose up -d --force-recreate
# 如果同时需要重新构建镜像(代码或 Dockerfile 有变更)
docker-compose up -d --force-recreate --build
========================================================================================================================
3. 完全重启(停止后重新启动)
# 停止并删除所有容器(保留数据卷)
docker-compose down
# 重新构建镜像并启动(等同于初次部署流程)
docker-compose up -d --build
========================================================================================================================
4. 重启指定服务(部分服务)
如果只需重启部分服务,可以指定服务名:
# 重启网关和认证服务
docker-compose restart usteu-gateway usteu-auth
# 重新构建并重启指定服务(代码或镜像有变更)
docker-compose up -d --force-recreate --build usteu-gateway usteu-auth
========================================================================================================================
# 查看所有容器状态
docker-compose ps
# 查看日志(实时跟踪)
docker-compose logs -f
dockerFile文件示例
# 基础镜像
FROM openjdk:17-jdk
# author
MAINTAINER usteu
ENV JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC"
# 挂载目录
VOLUME /home/usteu
# 创建目录
RUN mkdir -p /home/usteu
# 指定路径
WORKDIR /home/usteu
# 复制jar文件到路径
COPY ./jar/usteu-auth.jar /home/usteu/usteu-auth.jar
# 启动认证服务
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar usteu-auth.jar"]
注意这个 FROM openjdk:17-jdk是从你的服务器docker容器中拉取镜像,默认是从Docker Hub上拉取,可能会遇到超时的问题,具体怎么快速解决,可参考笔者的这篇文章
四、查看docker服务
docker-compose ps
这个命令必须在你的复制到服务器的docker文件下执行,其他路径执行无效
日志实时跟踪
docker-compose logs -f
至此,docker部署若依微服务的详细步骤已经完成了,撒花!!!!