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


18

我正在将Bitbucket管道与PosgreSQL用于CI / CD。根据此文档, 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文件中没有任何更改,这可能是此类错误的原因。

Answers:


17

看起来原因是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

4

大约一周前,这是一个非常新的变化。避免这种情况的一种方法是将您的postgres版本硬编码为最新版本,例如更改为postgres:9.5.18postgres:9.5.20-alpine

另一种方法是传递假密码:

services:
  db:
    image: postgres
    ports:
      - "8001:5432"
    environment:
      - POSTGRES_PASSWORD=fake_password

请参阅此处的讨论:https : //github.com/docker-library/postgres/issues/681


1

如果您是第一次通过Docker将Django与PostgreSQL连接到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


如果不建议这样做,为什么要建议呢?提醒您不建议这样做是件好事,但也可以提供建议的理由或解决方案。一定会有所帮助。只是一个意见。
ErroCode-112猴子发现

解决此问题的一个好方法是为超级用户指定POSTGRES_PASSWORD。您可以使用“ -e POSTGRES_PASSWORD = password”在“
docker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.