docker-compose.yml
services:
web: # 定义 Web 服务
image: nginx:latest # 使用 Nginx 镜像
container_name: my_web # 自定义容器名称
ports:
- "80:80" # 映射主机端口到容器端口
volumes:
- ./html:/usr/share/nginx/html # 挂载主机目录到容器
environment: # 设置环境变量
- NGINX_HOST=example.com
networks:
- my_network # 连接到自定义网络
depends_on: # 定义依赖关系
- db
restart: always # 设置重启策略
logging: # 配置日志
driver: json-file
options:
max-size: "10m"
max-file: "3"
healthcheck: # 定义健康检查
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
deploy: # 资源限制(仅适用于 Swarm 模式)
resources:
limits:
cpus: '0.5'
memory: 512M
db: # 定义数据库服务
build: # 使用指定目录Dockerfile
context: ./xxxx
dockerfile: Dockerfile
container_name: my_db # 自定义容器名称
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: mydb
volumes:
- db_data:/var/lib/mysql # 使用命名卷持久化数据
networks:
- my_network # 连接到自定义网络
healthcheck: # 定义健康检查
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 3
redis: # 定义 Redis 服务
image: redis:latest # 使用 Redis 镜像
container_name: my_redis # 自定义容器名称
ports:
- "6379:6379" # 映射主机端口到容器端口
networks:
- my_network # 连接到自定义网络
restart: unless-stopped # 设置重启策略
volumes: # 定义命名卷
db_data:
driver: local
networks: # 定义自定义网络
my_network:
driver: bridge
配置项说明
services
- 定义容器服务,每个服务对应一个容器。
常用配置项:
volumes
- 定义命名卷,用于持久化数据。
示例:
volumes: db_data: driver: local
networks
- 定义自定义网络,用于服务之间的通信。
示例:
networks: my_network: driver: bridge
restart
no
- 说明:默认值,容器不会自动重启。
- 适用场景:适用于不需要自动重启的容器。
always
- 说明:无论容器退出状态如何,都会自动重启。
- 适用场景:适用于必须保持运行的关键服务。
on-failure
- 说明:仅在容器以非零状态退出时重启。
- 适用场景:适用于需要处理错误并尝试恢复的服务。
unless-stopped
- 说明:容器会自动重启,除非用户手动停止它。
- 适用场景:适用于需要长期运行但允许手动停止的服务。
选项 | 说明 | 适用场景 |
---|---|---|
no | 容器不会自动重启 | 不需要自动重启的容器 |
always | 无论退出状态如何,都会自动重启 | 必须保持运行的关键服务 |
on-failure | 仅在容器以非零状态退出时重启 | 需要处理错误并尝试恢复的服务 |
unless-stopped | 自动重启,除非用户手动停止 | 需要长期运行但允许手动停止的服务 |
healthcheck
- 监控容器健康状态,确保服务正常运行。
示例:
healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 3
deploy
- 配置资源限制(如 CPU、内存),仅适用于 Swarm 模式。
示例:
deploy: resources: limits: cpus: '0.5' memory: 512M
评论已关闭