参考文档:
使用Docker Compose部署SpringBoot应用
Docker-从入门到实践

1. 介绍

Docker Compose 是一个用于定义和运行多个 docker 容器应用的工具。使用 Compose 你可以用 YAML 文件来配置你的应用服务,然后使用一个命令,你就可以部署你配置的所有服务了。

查看是否已经安装

docker-compose --version

使用 Docker Compose 的步骤

  • 使用 Dockerfile 定义应用程序环境,一般需要修改初始镜像行为时才需要使用;
  • 使用 docker-compose.yml 定义需要部署的应用程序服务,以便执行脚本一次性部署;
  • 使用 docker-compose up 命令将所有应用服务一次性部署起来。

2. docker-compose.yml 常用命令

模板文件

image

指定运行的镜像名称

# 运行的是mysql5.7的镜像
image: mysql:5.7

container_name

配置容器名称

# 容器名称为mysql
container_name: mysql

ports

指定宿主机和容器的端口映射(HOST:CONTAINER)

# 将宿主机的3306端口映射到容器的3306端口
ports:
  - 3306:3306

volumes

将宿主机的文件或目录挂载到容器中(HOST:CONTAINER)

# 将外部文件挂载到myql容器中
volumes:
  - /mydata/mysql/log:/var/log/mysql
  - /mydata/mysql/data:/var/lib/mysql
  - /mydata/mysql/conf:/etc/mysql

environment

配置环境变量

# 设置mysqlroot帐号密码的环境变量
environment:
  - MYSQL_ROOT_PASSWORD=root

links

连接其他容器的服务(SERVICE:ALIAS)

# 可以以database为域名访问服务名称为db的容器
links:
  - db:database

3. Docker Compose 常用命令

命令说明

构建、创建、启动相关容器

# -d表示在后台运行
docker-compose up -d

指定文件启动

docker-compose -f docker-compose.yml up -d

停止所有相关容器

docker-compose stop

列出所有容器信息

docker-compose ps

4. 使用 Docker Compose 部署应用

Docker Compose 将所管理的容器分为三层,工程、服务及容器。docker-compose.yml 中定义所有服务组成了一个工程,services 节点下即为服务,服务之下为容器。容器与容器直之间可以以服务名称为域名进行访问,比如在 mall-tiny-docker-compose 服务中可以通过 jdbc:mysql://db:3306 这个地址来访问 db 这个 mysql 服务。

编写 docker-compose.yml 文件

version: '3'
services:
  # 指定服务名称
  db:
    # 指定服务使用的镜像
    image: mysql:5.7
    # 指定容器名称
    container_name: mysql
    # 指定服务运行的端口
    ports:
      - 3306:3306
    # 指定容器中需要挂载的文件
    volumes:
      - /mydata/mysql/log:/var/log/mysql
      - /mydata/mysql/data:/var/lib/mysql
      - /mydata/mysql/conf:/etc/mysql
    # 指定容器的环境变量
    environment:
      - MYSQL_ROOT_PASSWORD=root
  # 指定服务名称
  mall-tiny-docker-compose:
    # 指定服务使用的镜像
    image: mall-tiny/mall-tiny-docker-compose:0.0.1-SNAPSHOT
    # 指定容器名称
    container_name: mall-tiny-docker-compose
    # 指定服务运行的端口
    ports:
      - 8080:8080
    # 指定容器中需要挂载的文件
    volumes:
      - /etc/localtime:/etc/localtime
      - /mydata/app/mall-tiny-docker-compose/logs:/var/logs

运行 Docker Compose 命令启动所有服务

docker-compose up -d