# Docker 进阶

# 参考文档

# Docker Compose

# 简介

我们知道通过 Dockerfile 可以很方便的定义一个单独的容器,但是一个项目中往往会包含多个容器(项目代码、Mysql、Redis...),多个容器配合才能完成一个应用。

Compose 就是用来编排这些容器的,它允许用户通过一个单独的 docker-compose.yml 模板文件定义一组关联容器构成一个应用。Compose 中有两个重要概念:

  • service 服务,一个应用实际的容器,也就是每一个微服务所在的容器,实际上可以包括多个运行相同镜像的容器实例。
  • project 项目,有多个服务组成的一个完整的应用项目。

Compose 默认管理的对象是项目,通过 Compose 可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose v1 中的命令是 docker-compose [arg],Compose v2 中的命令是 docker compose [arg]

# Compose 模板文件

详细参数解释可见文档 (opens new window)

目前主要使用到的 Compose 是 v3,所以这里默认使用 v3,其它版本可以去官方文档中查看。

Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。

# 示例

定义 docker-compose.yml 放在工程根目录下,执行 docker compose up 这个命令来启动并运行整个应用程序。在工程根目录下执行 docker compose logs 将展示整个应用的日志信息,不同服务的日志将会以不同的颜色展示出来。

# docker-compose.yml 配置
version: '3'
services:
  compose-demo:
    build: .
    ports:
      - '7400:7401'
    # 这里意思是先运行 redis,再运行当前服务
    depends_on:
      - redis
  redis:
    image: redis
    ports:
      - '6374:6379'

# service - compose-demo 的 Dockfile
FROM openjdk:8
ADD /target/compose-demo-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT java -jar app.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 讨论区

由于评论过多会影响页面最下方的导航,故将评论区做默认折叠处理。

点击查看评论区内容,渴望您的宝贵建议~
Last Updated: 7/21/2023, 5:42:08 PM