Ubuntu执行docker-compose up -d报错services不支持postgres配置项
报错原因
该报错通常由以下两种问题触发:
- 旧版Docker Compose V1强制要求配置文件顶部声明Compose语法版本号,你当前的配置缺少顶层
version字段,导致解析器无法正确识别services下的服务定义结构,误将postgres判定为非法配置项。 - 你的配置文件中混入了HTML转义字符,端口配置里的
"是双引号的HTML转义编码,并非YAML语法支持的标准双引号,会破坏配置结构的解析,触发格式校验错误。 - 额外小问题:
php-fpm的构建参数PHP_ENV= development中等号后多了冗余空格,可能会导致传入的环境变量值不符合预期。
解决步骤
- 首先在配置文件最顶部添加适配性最广的3.8版本声明
- 替换所有
"为标准英文双引号",同时删除PHP_ENV后的冗余空格 - 修正后的完整配置参考如下:
version: '3.8' services: postgres: container_name: 'lh-postgres' image: 'postgres:13' environment: POSTGRES_PASSWORD: root redis: container_name: 'lh-redis' image: 'redis:6' nginx: container_name: 'lh-nginx' build: ./nginx depends_on: - php-fpm volumes: - ./src/lh-app:/var/www/html/app - ./src/lh-api:/var/www/html/api ports: - "80:80" - "443:443" php-fpm: container_name: 'lh-php' image: docker.io/bitnami/php-fpm:8.0 user: '1000:1000' build: context: ./php-fpm args: - PHP_ENV=development depends_on: - postgres - redis volumes: - ./src/lh-app:/var/www/html/app - ./src/lh-api:/var/www/html/api
- 保存文件后重新执行启动命令即可:
docker-compose up -d
如果使用的是新版Docker Compose V2,也可以用兼容更好的无横杠命令:docker compose up -d
内容的提问来源于stack exchange,提问作者Akshay Lokhande
相关产品推荐
相关产品推荐

