手把手演示Docker部署若依微服务


前言

笔者最近使用若依微服务脚手架开发了一个企业内部工具微服务集成平台,采用阿里云云上部署方案,采用docker容器管理微服务,下面是一些搭建步骤。


一、安装docker服务引擎

使用国内镜像安装 Docker 服务

以 CentOS 7 系统为例,以下是使用国内镜像源安装 Docker 的步骤:

  1. 更新系统软件包
    打开终端并执行以下命令来更新系统软件包列表:
sudo yum update -y
  1. 安装必要的依赖
    安装允许 yum 使用 HTTPS 仓库所需的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加 Docker 国内镜像源
    添加阿里云的 Docker 镜像源:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装 Docker 引擎
    安装 Docker 社区版(CE):
sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. 配置 Docker 国内镜像加速
    创建或编辑 /etc/docker/daemon.json 文件,添加阿里云镜像加速地址。你可以登录你自己的阿里云控制台获取专属的镜像加速地址,这里以通用的国内镜像为例:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
  1. 重启 Docker 服务
    使配置生效,重启 Docker 服务并设置为开机自启:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
  1. 验证 Docker 安装
    运行以下命令验证 Docker 是否安装成功:
sudo docker run hello-world

二、安装 Docker Compose

由于 Docker Compose 本身是从 GitHub 下载,所以比较慢(注意你前面安装的docker引擎必须要2.0以上)

  1. 下载 Docker Compose
    先在git hub上下载
    https://github.com/docker/compose/releases/tag/v2.26.1

在这里插入图片描述

下载下来后再上传到linux服务器上/user/local/bin下,并改名为docker-compose

  1. 添加执行权限
    为下载的 Docker Compose 二进制文件添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  1. 验证 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服务

docker-compose ps

这个命令必须在你的复制到服务器的docker文件下执行,其他路径执行无效

在这里插入图片描述

日志实时跟踪

docker-compose logs -f

在这里插入图片描述

至此,docker部署若依微服务的详细步骤已经完成了,撒花!!!!

<think>好的,用户现在问的是关于用Docker部署若依微服务系统。首先,我需要确认用户的需求是什么。若依是一个开源的前后端分离权限管理系统,微服务版应该包含多个服务模块,比如认证中心、网关、各个业务模块等。用户可能已经对若依有一定的了解,现在想通过Docker部署,可能是为了简化环境配置或者实现快速部署。 接下来,我需要回忆一下Docker部署微服务的一般步骤。通常需要准备Docker环境,构建各个服务的镜像,然后通过Docker Compose或者Kubernetes来编排容器。但若依微服务可能涉及到数据库、Nacos作为注册中心和配置中心、Redis缓存、RabbitMQ消息队列等组件,所以这些都需要在Docker部署。 用户可能遇到的问题包括如何编写Dockerfile,如何处理服务的依赖关系,如何配置各个服务的连接信息,比如数据库的地址、Nacos的地址等。同时,若依的微服务可能有多个模块,比如auth、gateway、system等,每个模块都需要独立构建镜像,并且可能需要调整配置文件中的服务发现和配置中心的地址,从本地改为容器内的服务名。 另外,用户可能不太清楚如何将整个项目Docker化,是否需要修改源码中的配置,比如将localhost改为服务名称,确保容器间能够互相通信。可能还需要指导如何通过Maven插件构建Docker镜像,或者使用Docker Compose来定义各个服务之间的依赖和网络。 此外,用户可能希望有一个步骤指南,从准备环境开始,到构建镜像,再到启动容器,以及验证部署是否成功。需要详细列出每一步的命令和注意事项,比如如何配置Nacos的初始化数据,如何导入SQL文件到MySQL容器中,如何处理端口映射等。 还要考虑到用户可能遇到的常见问题,比如容器启动顺序的问题,服务之间无法通信,配置中心连接失败,或者数据库初始化不成功等。可能需要给出一些排查建议,比如检查容器日志,确认网络设置,或者检查配置文件是否正确。 最后,可能需要提醒用户关于生产环境的建议,比如使用更安全的密码,配置TLS,或者使用Kubernetes进行更复杂的编排,但如果是初次部署,保持简单明了会更合适。还要确认用户是否有其他特定的需求,比如是否需要整合CI/CD流程,或者是否需要进一步的优化配置。</think>以下是使用 Docker 部署若依微服务版(RuoYi-Cloud)的详细步骤指南: --- ### **1. 准备工作** - **环境要求**: - Docker 已安装([官方安装文档](https://docs.docker.com/engine/install/)) - Docker Compose(推荐) - JDK 1.8+、Maven(用于本地编译打包) - 若依微服务版源码([Github 仓库](https://github.com/若依/RuoYi-Cloud)) - **项目结构**: ```bash ruoyi-cloud ├── ruoyi-auth # 认证中心 ├── ruoyi-gateway # API网关 ├── ruoyi-modules # 业务模块(system/file等) ├── ruoyi-register # Nacos服务注册中心 └── ... # 其他组件 ``` --- ### **2. 部署依赖服务** 若依微服务依赖以下组件,需先通过 Docker 启动: #### **2.1 使用 Docker Compose 启动基础设施** 创建 `docker-compose.yml` 文件: ```yaml version: '3' services: mysql: image: mysql:5.7 container_name: ruoyi-mysql ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: ry-cloud volumes: - ./mysql/data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d # 存放SQL初始化脚本 nacos: image: nacos/nacos-server:latest container_name: ruoyi-nacos ports: - "8848:8848" environment: MODE: standalone # 单机模式 depends_on: - mysql redis: image: redis:6.0 container_name: ruoyi-redis ports: - "6379:6379" volumes: - ./redis/data:/data rabbitmq: image: rabbitmq:3-management container_name: ruoyi-rabbitmq ports: - "5672:5672" # AMQP协议端口 - "15672:15672" # 管理界面端口 ``` **启动命令**: ```bash docker-compose up -d ``` --- ### **3. 配置若依微服务** 1. **修改配置文件**: - 在每个微服务模块的 `application.yml` 中,将 MySQL、Redis、Nacos 的地址改为 Docker 容器名称: ```yaml spring: datasource: url: jdbc:mysql://ruoyi-mysql:3306/ry-cloud?useSSL=false cloud: nacos: discovery: server-addr: ruoyi-nacos:8848 ``` 2. **初始化数据库**: - 将若依的 SQL 脚本(`ruoyi-cloud.sql`)复制到 `mysql/init` 目录,Docker 启动时会自动执行。 --- ### **4. 构建微服务镜像** #### **4.1 为每个模块编写 Dockerfile** 示例(以 `ruoyi-gateway` 模块为例): ```dockerfile FROM openjdk:8-jdk-alpine COPY target/ruoyi-gateway.jar /app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] ``` #### **4.2 使用 Maven 打包并构建镜像** ```bash # 编译项目 mvn clean package -DskipTests # 构建镜像 docker build -t ruoyi-gateway:latest ./ruoyi-gateway ``` 重复此步骤为 `ruoyi-auth`、`ruoyi-system` 等模块构建镜像。 --- ### **5. 启动微服务容器** 手动启动或编写 Compose 文件: ```yaml services: ruoyi-gateway: image: ruoyi-gateway:latest ports: - "8080:8080" depends_on: - nacos - mysql networks: - ruoyi-net ruoyi-auth: image: ruoyi-auth:latest ports: - "9200:9200" depends_on: - nacos networks: - ruoyi-net # 其他服务类似... ``` **启动命令**: ```bash docker-compose up -d ``` --- ### **6. 验证部署** 1. **访问 Nacos 控制台**: - `http://localhost:8848/nacos`(账号/密码:nacos/nacos) - 确认所有微服务已注册成功。 2. **访问若依前端**: - 默认账号/密码:admin/admin123 - 通过网关端口(如 8080)访问接口。 --- ### **常见问题** 1. **服务未注册到 Nacos**: - 检查 Nacos 容器是否运行正常。 - 确认微服务配置中的 `nacos.server-addr` 是否指向 `ruoyi-nacos:8848`。 2. **数据库连接失败**: - 确保 MySQL 容器已启动,且 SQL 脚本正确初始化。 3. **跨容器通信问题**: - 使用 Docker 自定义网络(如 `ruoyi-net`)确保容器间通过服务名通信。 --- ### **扩展建议** - **生产环境优化**: - 使用 `docker-compose.prod.yml` 分离环境配置。 - 添加健康检查(`healthcheck`)和资源限制(`resources`)。 - **镜像仓库**: - 推送镜像到私有仓库(如 Harbor)或 Docker Hub。 如需更详细的配置或遇到具体问题,可提供日志或错误信息进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值