Golang环境下Docker部署PostgreSQL容器启动失败求助
解决Docker部署PostgreSQL容器时的密码配置报错问题
问题原因
你执行的docker run命令存在参数传递错误:POSTGRES_HOST_AUTH_METHOD=trust被当作容器启动的命令参数,而非环境变量传入,导致PostgreSQL的初始化脚本无法识别该配置,依然强制要求设置超级用户密码。
正确解决方法
方法1:在docker run中通过-e指定环境变量
使用-e参数传递环境变量,让PostgreSQL初始化流程读取到信任连接配置:
docker run -p 54321:5432 -e POSTGRES_HOST_AUTH_METHOD=trust db
方法2:在Dockerfile中预设环境变量
如果希望镜像默认启用无密码连接配置,可修改Dockerfile添加ENV指令:
FROM postgres:15.1 ENV POSTGRES_HOST_AUTH_METHOD=trust COPY up.sql /docker-entrypoint-initdb.d/1.sql CMD ["postgres"]
修改后重新构建镜像:
docker build -t db .
再启动容器即可:
docker run -p 54321:5432 db
重要提醒
trust模式会允许所有来源的连接无需密码验证,仅适合开发测试场景,生产环境必须设置强密码并使用默认的密码验证机制。
内容的提问来源于stack exchange,提问作者Edwin Fernando Pirajan Arevalo
相关产品推荐
相关产品推荐

