docker-compose 的文件结构及其命令
下面是对 docker-compose.yml
文件更详细的介绍,包括一些高级特性和配置选项。
服务(Services)
每个服务可以有多种配置选项,用于定义如何构建、运行和链接容 器。
-
build:
context
: 指定构建上下文的路径。dockerfile
: 指定要使用的 Dockerfile 路径。args
: 传递给构建过程的构建参数。
build:
context: ./app
dockerfile: Dockerfile.dev
args:
- NODE_ENV=development -
command: 覆盖容器启动时执行的默认命令。
command: ["npm", "start"]
-
depends_on: 指定服务启动的顺序。注意,它不保证容器内部的应用程序启动完成,只是保证容器启动。
depends_on:
- db -
entrypoint: 覆盖容器的默认入口点。
entrypoint: ["sh", "-c", "echo Hello World"]
-
environment: 设置环境变量,可以是列表或字典格式。
environment:
- NODE_ENV=production
- DEBUG=app:* -
env_file: 从文件中读取环境变量。
env_file:
- ./common.env
- ./app.env -
expose: 暴露容器内的端口,仅在 Docker 内部使用。
expose:
- "3000" -
ports: 映射主机和容器端口,格式为
主 机端口:容器端口
。ports:
- "80:80"
- "3000:3000" -
volumes: 挂载卷到容器内,格式为
主机目录:容器目录
。volumes:
- ./data:/data
- type: volume
source: mydata
target: /data -
restart: 定义容器重启策略。
restart: always
-
healthcheck: 配置健康检查。
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
卷(Volumes)
卷用于持久化数据,可以是匿名卷、命名卷或绑定卷。
-
命名卷: 可以在
volumes
顶级键下定义。volumes:
db_data: -