如何制作docker compose配置

举报
yd_277754045 发表于 2026/09/24 16:50:08 2026/09/24
【摘要】 已完成 18s制作 docker-compose.yml 的核心要点如下:基本结构(四要素)version: "3.8" # 版本(Compose V2 可省略)services: # 容器服务定义(核心)networks: # 自定义网络volumes: # 持久化数据卷services 关键字段字段 ...

已完成 18s

制作 docker-compose.yml 的核心要点如下:

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

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。