1 引言

Docker Compose 是一个简化 Docker 应用程序管理的工具,通过一个名为 docker-compose.yml 的文件定义相关服务、网络和卷。使用 Docker Compose,你能方便地配置、启动和管理多个 Docker 容器,构建完整的应用堆栈。

2 使用方法

在项目的根目录下创建一个 docker-compose.yml 文件,定义你的服务、网络和卷。下面是一个简单的例子:

2.1 配置 yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3'
services:
db:
image: postgres:14
container_name: postgres14
ports:
- "5433:5432"
environment:
POSTGRES_PASSWORD: 123456
volumes:
- /exports/project/knowjourney:/var/lib/postgresql/data
frontend:
image: node:16_231229
container_name: xy_frontend
network_mode: "host" # 网络端口映射
environment:
- HOST_IP=${HOST_IP} # 将宿主机环境变量 HOST_IP 转给docker
volumes:
- /exports/:/opt/xieyan
entrypoint: ["/bin/bash", "-c"] # 容器启动时运行的默认命令
command: # 覆盖默认命令的参数
- |
cd /opt/xieyan/git/knowjourney/ui/frontend/
npm run serve
restart: unless-stopped # 重启后自动启动
depends_on: # 依赖
- db

2.2 启动服务

按照配置文件启动所有的服务。如果需要在后台运行,可以使用 -d

1
2
docker-compose up # 启动所有 docker
docker-compose up -d db # 只启动 db,并在后台运行

2.3 停止后台服务

1
docker-compose stop

2.4 移除已停止的服务

1
docker-compose rm

3 其它方法

3.1 设置代理

在 docker-compose 在 build 下面设代理 args

1
2
3
4
5
6
build:
context: backend
dockerfile: Dockerfile
args:
HTTP_PROXY: "http://192.168.10.106:12346"
HTTPS_PROXY: "http://192.168.10.106:12346"

3.2 服务自动启动

docker-compose 写法

1
restart: unless-stopped

3.3 停止自启动

启动的服务,机器重启后仍然被启动,需要手动停止

在包含 docker-compose.yml 文件的目录中执行:

1
2
$ docker-compose down
$ docker-compose stop