如何制作docker compose配置
【摘要】 已完成 18s制作 docker-compose.yml 的核心要点如下:基本结构(四要素)version: "3.8" # 版本(Compose V2 可省略)services: # 容器服务定义(核心)networks: # 自定义网络volumes: # 持久化数据卷services 关键字段字段 ...
已完成 18s
制作 docker-compose.yml 的核心要点如下:
- 基本结构(四要素)
version: "3.8" # 版本(Compose V2 可省略)
services: # 容器服务定义(核心)
networks: # 自定义网络
volumes: # 持久化数据卷
- services 关键字段
字段 用途
image / build 用现成镜像 或 从 Dockerfile 构建
ports 端口映射 “宿主机:容器”
volumes 挂载目录/数据卷 ./data:/data
environment / env_file 环境变量
depends_on 服务启动顺序(注意:不等于"就绪")
restart 重启策略 unless-stopped
healthcheck 健康检查 - 最小示例
services:
web:
build: .
ports:
- "8080:80"
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD} # 引用 .env,不硬编码
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
volumes:
db_data:
- 最佳实践要点
密钥进 .env,用 ${VAR} 引用,.gitignore 掉 .env
用 depends_on + healthcheck 组合才能真正等依赖就绪(depends_on: condition: service_healthy)
数据必须挂 volume,否则容器删除数据丢失
固定镜像 tag(用 postgres:16 而非 latest)避免不可控升级
资源限制:deploy.resources.limits 防止容器吃满宿主机
单一网络默认隔离,跨服务用服务名互访,无需写死 IP - 常用命令
docker compose up -d # 后台启动
docker compose down # 停止并删除容器
docker compose logs -f # 查看日志
docker compose ps # 查看状态
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)