我正在将Bitbucket管道与PosgreSQL用于CI / CD。根据此documentation,PostgreSQL服务已在bitbucket-pipelines.yml
中这样描述:
definitions:
services:
postgres:
image: postgres:9.6-alpine
到现在为止一切正常。但是我所有最新的管道均失败,并出现以下错误:
Error: Database is uninitialized and superuser password is not specified.
You must specify POSTGRES_PASSWORD for the superuser. Use
"-e POSTGRES_PASSWORD=password" to set it in "docker run".
You may also use POSTGRES_HOST_AUTH_METHOD=trust to allow all connections
without a password. This is *not* recommended. See PostgreSQL
documentation about "trust":
https://www.postgresql.org/docs/current/auth-trust.html
我该如何解决? bitbucket-pipelines.yml
文件中没有任何更改,这可能是此类错误的原因。
答案 0 :(得分:20)
原因似乎是docker image的更新(github issue)。最新版本不允许在没有密码的情况下从任何地方连接到数据库。因此,您需要指定用户名/密码:
definitions:
services:
postgres:
image: postgres:9.6-alpine
environment:
POSTGRES_DB: pipelines
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_user_password
或者,如果您仍然不想使用密码,则可以只设置POSTGRES_HOST_AUTH_METHOD=trust
环境变量:
definitions:
services:
postgres:
image: postgres:9.6-alpine
environment:
POSTGRES_HOST_AUTH_METHOD: trust
答案 1 :(得分:5)
这是大约一周前的最新更改。避免这种情况的一种方法是将您的postgres版本硬编码为最新版本,例如更改为[Stage 0:> (0 + 2) / 2]
20/02/21 21:50:41 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, ip-10-0-1-10.ec2.internal, executor 1): java.lang.ArrayIndexOutOfBoundsException: 5
at $line27.$read$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:31)
at $line27.$read$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$anonfun$1.apply(<console>:31)
或postgres:9.5.18
另一种方法是传递假密码:
postgres:9.5.20-alpine
在此处查看讨论:https://github.com/docker-library/postgres/issues/681
答案 2 :(得分:1)
如果您是第一次通过Docker将Django连接到PostgreSQL时遇到问题,请将POSTGRES_HOST_AUTH_METHOD: trust
添加到您的docker-compose.yml
文件中:
db:
image: postgres:11
environment:
POSTGRES_HOST_AUTH_METHOD: trust
这为我解决了连接问题。
还请注意,“建议不要使用 。有关“信任”的信息,请参见PostgreSQL文档:https://www.postgresql.org/docs/current/auth-trust.html”