首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用 Docker Compose 快速部署微服务:详解与实战

使用 Docker Compose 快速部署微服务:详解与实战

作者头像
朱事顺李
发布2025-11-14 14:59:56
发布2025-11-14 14:59:56
1.5K0
举报
文章被收录于专栏:nginxnginx

使用 Docker Compose 快速部署微服务:详解与实战

Docker Compose 是 Docker 提供的一种便捷工具,用于定义和运行多容器应用。在开发和部署过程中,特别是涉及微服务架构时,Compose 可以大幅提升部署效率。本文将深入讲解如何使用 Docker Compose 部署微服务集群,通过实例展示其强大的功能与优势。

一、什么是 Docker Compose?

Docker Compose 是一个用来定义和管理多容器 Docker 应用的工具。通过一个单独的 docker-compose.yml 文件,开发者可以定义多个服务的容器配置,然后使用简单的命令来管理这些容器。它的主要优势包括:

  1. 简化配置:使用 YAML 文件一次性描述所有服务。
  2. 轻松管理:只需一条命令即可启动、停止或重启整个微服务集群。
  3. 高效部署:Compose 可以在开发、测试和生产环境中无缝运行。

二、Docker Compose 文件格式

Compose 文件是以 YAML 格式编写的,通过 services 关键字定义多个服务。以下是一个基本的 Compose 文件示例:

代码语言:javascript
复制
version: "3.8"
services:
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "/tmp/mysql/data:/var/lib/mysql"
      - "/tmp/mysql/conf/myCnf.cnf:/etc/mysql/conf.d/myCnf.cnf"

  web:
    build: .
    ports:
      - "8090:8090"
1. 配置解读
  • mysql
    • 基于官方的 mysql:5.7.25 镜像。
    • 使用 environment 配置环境变量,设置 root 密码。
    • 使用 volumes 将本地目录挂载到容器内,确保数据持久化。
  • web
    • 从当前目录构建一个镜像(需要 Dockerfile)。
    • 将容器的 8090 端口映射到主机的 8090 端口。
三、安装 Docker Compose

在 Linux 服务器上,可以通过以下步骤安装 Docker Compose:

1. 下载 Compose 可执行文件
代码语言:javascript
复制
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2. 赋予执行权限
代码语言:javascript
复制
chmod +x /usr/local/bin/docker-compose
3. 安装自动补全(可选)
代码语言:javascript
复制
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

四、使用 Docker Compose 部署微服务集群

下面我们通过一个实际案例展示如何使用 Docker Compose 快速部署一个包含多个微服务的集群。

1. 微服务架构说明

本案例中的微服务包括:

  • Nacos:服务注册与配置中心。
  • MySQL:数据库服务。
  • UserService:用户服务。
  • OrderService:订单服务。
  • Gateway:网关服务,暴露外部访问入口。
2. 编写 docker-compose.yml 文件
代码语言:javascript
复制
version: "3.2"
services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"

  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d"

  userservice:
    build: ./user-service

  orderservice:
    build: ./order-service

  gateway:
    build: ./gateway
    ports:
      - "10010:10010"
3. 文件说明
  • nacos
    • 基于 nacos/nacos-server 镜像。
    • 使用 standalone 模式,暴露 8848 端口。
  • mysql
    • 使用 MySQL 作为数据库。
    • 挂载本地数据和配置目录,确保数据持久化。
  • userserviceorderservice
    • 基于 Dockerfile 构建,不直接暴露端口。
    • 这些服务通过网关服务访问。
  • gateway
    • 网关服务,暴露 10010 端口,作为对外访问的入口。

五、修改微服务配置

为了使微服务能够在 Docker Compose 的集群中正常运行,需要将服务之间的地址改为基于服务名访问。

1. 修改 bootstrap.yml
代码语言:javascript
复制
spring:
  cloud:
    nacos:
      server-addr: nacos:8848
      config:
        file-extension: yaml
2. 修改 application.yml
代码语言:javascript
复制
server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_user?useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

在上述配置中:

  • Nacos 的地址由 localhost 修改为 nacos
  • 数据库地址由 localhost 修改为 mysql,这两个名称对应于 docker-compose.yml 中的服务名。

六、打包与部署
1. 打包微服务

修改每个微服务的 pom.xml,将打包的文件命名为 app.jar

代码语言:javascript
复制
<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
2. 编写 Dockerfile

每个微服务需要一个 Dockerfile 文件,例如:

代码语言:javascript
复制
FROM openjdk:8
COPY ./app.jar /tmp/app.jar
ENTRYPOINT ["java", "-jar", "/tmp/app.jar"]
3. 部署服务

将所有配置文件和打包后的 app.jar 文件上传到服务器,然后执行以下命令启动微服务集群:

代码语言:javascript
复制
docker-compose up -d
4. 查看服务日志
代码语言:javascript
复制
docker-compose logs -f

七、总结

通过 Docker Compose,我们可以轻松地管理和部署复杂的微服务架构。它提供了一种简单且高效的方式来定义和运行多容器应用,同时减少了人为操作的错误。

核心优势:
  1. 简化部署流程:从编写 Compose 文件到启动微服务集群,仅需一条命令。
  2. 环境隔离:通过服务名实现微服务之间的通信,避免了端口冲突。
  3. 易于扩展:可以轻松地在现有服务中添加新服务。

在实际项目中,合理使用 Docker Compose,不仅可以提高开发和部署效率,还可以为后续的扩展和维护打下坚实的基础。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 使用 Docker Compose 快速部署微服务:详解与实战
    • 一、什么是 Docker Compose?
    • 二、Docker Compose 文件格式
    • 1. 配置解读
    • 三、安装 Docker Compose
      • 1. 下载 Compose 可执行文件
      • 2. 赋予执行权限
      • 3. 安装自动补全(可选)
    • 四、使用 Docker Compose 部署微服务集群
      • 1. 微服务架构说明
      • 2. 编写 docker-compose.yml 文件
      • 3. 文件说明
    • 五、修改微服务配置
      • 1. 修改 bootstrap.yml
      • 2. 修改 application.yml
    • 六、打包与部署
      • 1. 打包微服务
      • 2. 编写 Dockerfile
      • 3. 部署服务
      • 4. 查看服务日志
    • 七、总结
      • 核心优势:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档