You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Stack部署PostgreSQL容器时添加SSL命令出现YAML语法错误

问题解决:Docker Compose添加SSL命令后YAML语法错误

错误原因

  1. 缩进不统一:command字段的缩进与同级的environment、image等字段不一致,YAML对缩进层级要求严格,层级错误会触发解析失败。
  2. 列表项格式错误:原command下的参数缩进不正确,且未遵循YAML列表的规范写法,导致解析器无法识别键值对。

修复后的Docker Compose配置

方式一:列表形式(推荐,更清晰)

services:
  postgres-example-pg-hba:
    image: mybuild:1
    secrets: 
      - pg_password
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=mysuperuser
      - POSTGRES_PASSWORD_FILE=/run/secrets/pg_password
    command:
      - postgres
      - -c
      - ssl=on
      - -c
      - ssl_cert_file=/temp/ssl/server.crt
      - -c
      - ssl_key_file=/temp/ssl/server.key
      - -c
      - ssl_ca_file=/temp/ssl/root.crt
    build:
      context: .
    ports:
      - "5432:5432"
    restart: unless-stopped

secrets:
  pg_password:
    external: true

方式二:字符串形式

services:
  postgres-example-pg-hba:
    image: mybuild:1
    secrets: 
      - pg_password
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=mysuperuser
      - POSTGRES_PASSWORD_FILE=/run/secrets/pg_password
    command: "postgres -c ssl=on -c ssl_cert_file=/temp/ssl/server.crt -c ssl_key_file=/temp/ssl/server.key -c ssl_ca_file=/temp/ssl/root.crt"
    build:
      context: .
    ports:
      - "5432:5432"
    restart: unless-stopped

secrets:
  pg_password:
    external: true

关键注意点

  • 所有同级配置字段必须保持相同缩进(通常为4个空格),禁止混合使用不同数量的空格或制表符。
  • 列表形式的command需将每个命令参数拆分为独立列表项,包括postgres主命令,避免YAML解析时出现歧义。
  • 确保容器内/temp/ssl/路径下存在对应的证书文件(server.crt、server.key、root.crt),否则PostgreSQL启动会失败。

内容的提问来源于stack exchange,提问作者Inspiraller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:52:18