docker-compose 配置字段详解
· 阅读需 2 分钟
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
可以使得一个服务容器能够安全地访问另一个服务的容器,通过其服务名作为主机名。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
成为管理容器应用的强大工具。