跳到主要内容

docker-compose 配置字段详解

· 阅读需 2 分钟
素明诚
Full stack development

version

指定 docker-compose 文件使用的版本,这会决定你可以使用的配置选项和行为。

version: '3.8'

services

定义应用中的服务,每个服务都会成为一个容器。这是 docker-compose.yml 文件的核心部分。

services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:latest
environment:
POSTGRES_DB: example

build

构建镜像的配置。可以指定 Dockerfile 的位置和构建上下文路径。不建议在这里做构建,建议在外面使用 Dockerfile 实现

services:
app:
build:
context: .
dockerfile: Dockerfile
args:
ARG1: value1

image

指定服务使用的镜像名称和标签。

services:
redis:
image: "redis:alpine"

ports

映射端口。格式为 [宿主机端口]:[容器端口]

services:
web:
ports:
- "4000:80"

volumes

挂载卷,用于数据持久化和共享数据。

services:
db:
volumes:
- "dbdata:/var/lib/postgresql/data"
volumes:
dbdata:

environment

设置环境变量,可以用来配置容器内应用。

services:
web:
environment:
- DEBUG=1

depends_on

指定服务启动的依赖关系,确保服务按照特定的顺序启动。

services:
web:
depends_on:
- db

networks

定义网络,用于连接各个服务。服务只能通过网络互相访问。

services:
web:
networks:
- frontend
db:
networks:
- backend
networks:
frontend:
backend:

command

覆盖容器启动后默认执行的命令。

services:
myservice:
command: ["python", "app.py"]

使用 links 可以使得一个服务容器能够安全地访问另一个服务的容器,通过其服务名作为主机名。links 也可以为链接的服务提供别名,使得在源容器内部可以通过别名来访问目标容器。

services:
web:
links:
- db:database

restart

配置服务的重启策略。

services:
web:
restart: always

healthcheck

定义健康检查,用于确定服务的健康状态。

services:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
start_period: 40s

logging

配置日志记录选项。

services:
web:
logging:
driver: syslog
options:
syslog-address: "tcp://192.168.0.42:123"

这些是 docker-compose.yml 文件中最常见的配置项,通过这些配置,用户可以详终定义和管理容器化应用的行为。每个选项都提供了控制和调整容器运行环境的灵活性,使得 docker-compose 成为管理容器应用的强大工具。