在Visual Studio中运行Docker Compose触发Postgres未初始化错误
问题解决:Postgres Docker容器因环境变量格式错误启动失败
问题根源
你提供的docker-compose.yml中,环境变量的写法存在格式错误:等号两边的空格会导致Docker无法正确识别Postgres所需的环境变量。
比如你原来的配置:
- POSTGRES_PASSWORD = postgres
这种写法会让Docker将变量名识别为POSTGRES_PASSWORD (末尾带空格),值为 postgres(开头带空格),而Postgres需要的是精确的POSTGRES_PASSWORD变量名,因此会判定你未设置超级用户密码,抛出启动错误。
从生成的docker run命令也能验证这一点:--env=POSTGRES_USER = postgres里的空格被直接保留,导致变量名不符合Postgres的要求。
修复方案
修改docker-compose.yml中的环境变量配置,去掉等号两边的空格,正确写法如下:
services: bookify.api: image: ${DOCKER_REGISTRY-}bookifyapi build: context: . dockerfile: Bookify.Api/Dockerfile depends_on: - bookify-db bookify-db: image: 'postgres:latest' container_name: Bookify.Db environment: - POSTGRES_DB=bookify - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres volumes: - ./.containers/database:/var/lib/postgresql/data ports: - 5432:5432
额外说明
- 无需提前在pgAdmin创建数据库:Postgres镜像会自动使用
POSTGRES_DB指定的名称创建数据库,同时用POSTGRES_USER和POSTGRES_PASSWORD配置超级用户。 - 无需额外下载组件:只要Docker和Docker Compose正常运行,Postgres镜像会自动拉取并配置所需依赖。
内容的提问来源于stack exchange,提问作者jmath412
相关产品推荐
相关产品推荐

