Linux下配置docker-compose.yml需严格遵循YAML语法(空格缩进、冒号后空格、双引号包裹特殊字符)和Compose结构(必含version与services),常用字段如image、ports、volumes等须按规范书写,并通过docker-compose config验证。
在 Linux 上配置 Docker Compose 模板文件(
),核心是遵循 YAML 语法规范并符合 Docker Compose 的服务定义结构。写错缩进、字段名拼写错误或版本不匹配,都会导致
失败。
YAML 基础规范必须遵守
YAML 对空白敏感,不支持 Tab 缩进,只允许空格;常见错误包括:
用 Tab 替代 2 或 4 个空格 → 报错
键名后缺少冒号或冒号后没加空格 → 如
应为
字符串含特殊字符(如
、
、
)未加引号 → 推荐统一用双引号包裹值,例如
布尔值写成
/
即可,不要加引号;但
会被当字符串处理
docker-compose.yml 必须包含的顶层字段
一个最小可用模板需包含
和
,其他如
、
按需添加:
Docker Desktop(linux)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
version
:指定 Compose 文件格式版本,推荐
(兼容 Docker 20.10+,功能稳定);避免用
(已逐步弃用)
services
:定义容器服务列表,每个服务名是自定义标识(如
、
),下级字段描述该容器行为
services.
至少含
或
字段;否则启动报错
常用服务字段与正确写法示例
以下字段在实际配置中高频出现,注意格式和语义:
image
:指定镜像名,支持带标签,如
ports
:宿主机:容器端口映射,写成字符串数组,如
;单个映射不能写成
volumes
:绑定挂载优先用绝对路径,如
;命名卷需提前
或在文件中声明
区块
environment
:环境变量可写数组或字典,推荐字典更清晰:
depends_on
:仅控制启动顺序,不等待依赖服务“就绪”;需配合健康检查或应用层重试逻辑
验证与调试技巧
写完文件别急着
,先做两步检查:
运行
:校验 YAML 语法 + 解析最终配置(含继承、变量替换),输出即生效配置;报错会明确提示行号和原因
使用
可静默验证(适合 CI 脚本)
变量替换用
,从 shell 环境或
文件读取;
文件每行
,无需引号,且不支持注释
多环境配置可拆分
,用
合并加载
docker-compose.ymldocker-compose upfound character '\t'image:nginximage: nginx:{[command: "sh -c 'echo hello'"truefalse"true"versionservicesvolumesnetworks"3.8"2.xwebdbimagebuildService 'xxx' has neither an image nor a build contextimage: nginx:1.25-alpineports: ["8080:80", "443:443"]ports: 8080:80volumes: ["./data:/app/data:rw"]docker volume create myvolvolumes:environment: DB_HOST: "mysql" DEBUG: "1"updocker-compose configdocker-compose config --quiet${VAR_NAME}.env.envKEY=VALUEdocker-compose.prod.ymldocker-compose -f docker-compose.yml -f docker-compose.prod.yml up