PostgreSQL的CI / CD管道失败,出现“未初始化数据库且未指定超级用户密码”错误

时间:2020-02-17 12:36:34

标签: postgresql docker pipeline

我正在将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文件中没有任何更改,这可能是此类错误的原因。

3 个答案:

答案 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