Docker Compose v3.x 参数速查备忘

Docker Compose v3.x 参数速查备忘录

适用:docker compose up(Compose V2)|文件版本 3.8

标记说明

✅ 开发常用 ⭐ 生产必配 ⚠️ 高危慎用 🧪 调试专用

一、服务基础配置(services: xxx 下)

参数作用说明开发环境建议生产环境建议
image指定容器镜像名称与 tag✅ 必填,尽量固定 tag,不要用 latest⭐ 必填,严禁 latest,锁定具体版本
hostname容器内部操作系统主机名✅ 设置,方便进入容器识别✅ 设置,便于日志排查
container_name自定义容器名称✅ 可使用❌ 不推荐:无法横向 scale 扩容
restart容器重启策略on-failureunless-stopped(最优)可选:on-failure:5
healthcheck业务健康检测,识别卡死进程✅ 简单配置⭐ 强制配置,带上start_period
command覆盖镜像 CMD 启动命令✅ 经常用来调试启动参数✅ 按需使用
entrypoint覆盖镜像 ENTRYPOINT 入口脚本🧪 调试使用谨慎修改,避免破坏镜像逻辑
build本地根据 Dockerfile 构建镜像✅ 开发环境高频使用❌ 生产尽量使用预构建镜像

二、资源限制(生产重点)

参数作用说明开发环境建议生产环境建议
cpusCPU 核心上限限制可选,不强制⭐ 必须配置,防止占满宿主机 CPU
mem_limit最大内存限制可选⭐ 必须配置,避免 OOM 拖垮宿主机
mem_reservation内存软限制(预留)不配置✅ 搭配 mem_limit 使用
ulimits修改文件句柄、进程数限制可选⭐ Web / 数据库类必须配置 nofile
ulimits:
  nofile:
    soft: 65535
    hard: 65535

三、环境变量配置

参数作用说明开发环境建议生产环境建议
environment直接写入环境变量✅ 常用⚠️ 禁止存放密码密钥
env_file从外部文件加载环境变量✅ 使用⭐ 推荐,敏感信息单独文件,设置权限 600

四、存储挂载

参数作用说明开发环境建议生产环境建议
volumes目录 / 数据卷挂载✅ 开发绑定宿主机目录✅ 持久化数据使用命名卷;配置文件只读挂载
tmpfs内存临时文件系统,重启丢失✅ 调试⭐ /tmp、/run 推荐使用,减少磁盘 IO
read_only容器根文件系统只读❌ 开发不方便⭐ 强烈推荐,配合 tmpfs,安全加固

五、网络相关配置

参数作用说明开发环境建议生产环境建议
ports宿主机 ↔ 容器端口映射✅ 常用✅ 按需映射;内部服务尽量不暴露端口
expose声明容器内部端口,不映射宿主机✅ 内部服务使用✅ 微服务内部通信推荐
extra_hosts容器内 /etc/hosts 自定义域名✅ 配置host.docker.internal:host-gateway✅ 按需添加
dns自定义 DNS 服务器✅ 223.5.5.5✅ 指定内部 DNS 或公共 DNS
network_mode切换网络模式默认 bridge⚠️ 禁止 host 模式,破坏网络隔离
networks使用自定义桥接网络✅ 统一自定义网络⭐ 所有服务加入自定义网络,不要默认 bridge

六、安全权限配置(生产加固核心)

参数作用说明开发环境建议生产环境建议
user指定非 root 用户运行容器可选⭐ 强制配置,不以 root 运行
cap_drop移除 Linux 内核权限可选cap_drop: [ALL]最小权限原则
cap_add添加内核权限尽量不用仅必须时少量添加(如 NET_BIND_SERVICE)
security_opt安全选项可选no-new-privileges:true 禁止提权
privileged特权模式🧪 特殊调试⚠️ 严禁开启 true,极高风险
sysctls修改容器内核参数可选✅ 高并发服务调优 tcp 参数

七、日志、标签、依赖

参数作用说明开发环境建议生产环境建议
logging日志驱动与滚动策略可选必配日志滚动,防止磁盘爆满
logging:
  driver: json-file
  options:
    max-size: "10m"
    max-file: "3"

| depends_on | 服务启动顺序依赖 | ✅ 使用 | ✅ 使用;Compose V2 加上 condition: service_healthy |

| labels | 容器自定义标签 | 可选 | ✅ 添加环境、服务名标签,便于监控、清理 |

八、调试专用参数(仅开发)

参数作用说明开发环境建议生产环境建议
tty: true分配伪终端🧪 需要交互式容器开启❌ 不需要关闭
stdin_open: true保持标准输入打开🧪 配合 tty 使用❌ 关闭

📋 模板快速复制

1)开发环境模板(docker-compose.dev.yml)

version: "3.8"
services:
  app:
    image: nginx:alpine
    hostname: dev-web
    container_name: dev-nginx
    restart: on-failure
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      TZ: Asia/Shanghai
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: ["CMD", "wget", "--spider", "http://127.0.0.1"]
      interval: 10s
      timeout: 5s
      retries: 2
    tty: true
    stdin_open: true
    networks:
      dev-net:

networks:
  dev-net:
    driver: bridge

2)生产环境标准模板(docker-compose.prod.yml)

version: "3.8"
services:
  app:
    image: nginx:1.25.3-alpine # 固定版本,禁止latest
    hostname: prod-web
    restart: unless-stopped
    cpus: "0.4"
    mem_limit: 256m
    ulimits:
      nofile:
        soft: 65535
        hard: 65535
    ports:
      - "8080:80"
    expose:
      - 80
    env_file:
      - .env.prod
    tmpfs:
      - /tmp
    read_only: true
    user: "1000:1000"
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    dns:
      - 223.5.5.5
    healthcheck:
      test: ["CMD", "wget", "--spider", "http://127.0.0.1"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 15s
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"
    labels:
      env: production
      service: nginx-web
    networks:
      prod-net:

networks:
  prod-net:
    driver: bridge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值