Помилка CI / CD з PostgreSQL: "База даних неініціалізована і пароль суперпользователя не вказаний" помилка


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файлі не було змін, які могли б бути причиною такої помилки.

Відповіді:


17

Схоже, причиною є оновлення зображення докера ( випуск github ). Останні версії не дозволяють підключатися до БД без пароля з будь-якого місця. Тому вам потрібно вказати ім’я користувача / пароль:

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:9.5.18 абоpostgres:9.5.20-alpine

Ще один спосіб - ввести фальшивий пароль:

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

Дивіться дискусію тут: https://github.com/docker-library/postgres/isissue/681


1

Якщо у вас виникли проблеми з підключенням Django до PostgreSQL через Docker вперше, тоді додайте файл 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 = пароль", щоб встановити його в "запуск
докера
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.