Pipa CI / CD dengan PostgreSQL gagal dengan “Basis data tidak diinisialisasi dan kata sandi pengguna super tidak ditentukan” kesalahan


18

Saya menggunakan pipa Bitbucket dengan PosgreSQL untuk CI / CD. Menurut dokumentasi ini, layanan PostgreSQL telah dijelaskan dengan bitbucket-pipelines.ymlcara ini:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine

Itu bekerja dengan baik sampai sekarang. Tetapi semua saluran pipa terbaru saya gagal dengan kesalahan berikut:

   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

Bagaimana saya bisa memperbaikinya? Tidak ada perubahan pada bitbucket-pipelines.ymlfile yang bisa menjadi alasan kesalahan tersebut ..

Jawaban:


17

Sepertinya alasannya adalah pembaruan gambar buruh pelabuhan ( masalah github ). Versi terbaru tidak memungkinkan untuk terhubung ke DB tanpa kata sandi dari mana saja. Jadi, Anda perlu menentukan nama pengguna / kata sandi:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
         POSTGRES_DB: pipelines
         POSTGRES_USER: test_user
         POSTGRES_PASSWORD: test_user_password

Atau jika Anda masih tidak ingin menggunakan kata sandi, Anda bisa mengatur POSTGRES_HOST_AUTH_METHOD=trustvariabel lingkungan:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
        POSTGRES_HOST_AUTH_METHOD: trust

4

Ini adalah perubahan yang sangat baru, sekitar seminggu yang lalu. Salah satu cara untuk menghindarinya adalah dengan meng-hardcode versi postgres Anda menjadi bukan yang terbaru, misalnya mengubah ke postgres:9.5.18ataupostgres:9.5.20-alpine

Cara lain adalah dengan memasukkan kata sandi palsu:

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

Lihat diskusi di sini: https://github.com/docker-library/postgres/issues/681


1

Jika Anda mengalami masalah saat menyambungkan Django ke PostgreSQL via Docker untuk pertama kalinya, tambahkan POSTGRES_HOST_AUTH_METHOD: trustke docker-compose.ymlfile Anda :

db: image: postgres:11 environment: POSTGRES_HOST_AUTH_METHOD: trust

Ini menyelesaikan masalah koneksi untuk saya.

Perlu diketahui juga bahwa "Ini tidak dianjurkan. Lihat dokumentasi PostgreSQL tentang" kepercayaan ": https://www.postgresql.org/docs/current/auth-trust.html "


jika ini TIDAK DIANJURKAN, mengapa menyarankannya? Memperingatkan bahwa itu tidak dianjurkan adalah baik, tetapi juga memberikan alasan Anda menyarankannya atau memberikan solusi untuk itu. Pasti akan membantu. Hanya sebuah Opini.
— ErroCode-112 Monkey Ditemukan

Pekerjaan yang bagus untuk ini adalah menentukan POSTGRES_PASSWORD untuk superuser. Anda dapat menggunakan "-e POSTGRES_PASSWORD = kata sandi" untuk mengaturnya di "buruh pelabuhan"
— ADRIAN R7Z
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.