PostgreSQL içeren CI / CD ardışık düzen, "Veritabanı başlatılmadı ve süper kullanıcı parolası belirtilmedi" hatasıyla başarısız oldu


18

CI / CD için PosgreSQL ile Bitbucket boru hattı kullanıyorum. Bu belgeye göre PostgreSQL hizmeti şu şekilde tanımlanmıştır bitbucket-pipelines.yml:

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

Şimdiye kadar iyi çalıştı. Ancak tüm son boru hatlarım şu hatayla başarısız oldu:

   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

Nasıl düzeltebilirim? bitbucket-pipelines.ymlDosyada böyle bir hatanın nedeni olabilecek hiçbir değişiklik yoktu .

Yanıtlar:


17

Bunun nedeni docker görüntüsünün güncellemeleri (github sorunu ). En son sürümler DB'ye herhangi bir yerden şifre olmadan bağlanmasına izin vermez. Bu nedenle kullanıcı adını / şifreyi belirtmeniz gerekir:

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

Veya hala şifre kullanmak istemiyorsanız, sadece POSTGRES_HOST_AUTH_METHOD=trustortam değişkenini ayarlayabilirsiniz :

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

4

Bu yaklaşık bir hafta öncesinden beri çok yeni bir değişiklik. Bunu önlemenin bir yolu son değil sizin postgres sürümünü kodlamalısınız kadar, mesela değişen postgres:9.5.18yapostgres:9.5.20-alpine

Başka bir yol sahte bir şifre geçirmektir:

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

Buradaki tartışmaya bakın: https://github.com/docker-library/postgres/issues/681


1

Django'yu PostgreSQL'e Docker aracılığıyla ilk kez bağlarken sorun yaşıyorsanız POSTGRES_HOST_AUTH_METHOD: trust, docker-compose.ymldosyayı dosyanıza ekleyin :

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

Bu benim için bağlantı sorununu çözdü.

Ayrıca "Bu olduğunu lütfen unutmayın değil tavsiye hakkında bakınız PostgreSQL belgelerine. 'Güven': https://www.postgresql.org/docs/current/auth-trust.html "


bu TAVSİYE EDİLMİYORSA, neden öneriyoruz? Tavsiye edilmediğini bildirmek iyidir, ama aynı zamanda neden önerdiğinizi veya üzerinde bir çalışma sağladığınızı da sağlar. Kesinlikle yardımcı olacaktır. Sadece bir Görüş.
ErroCode-112 Monkey Bulundu

Bu konuda iyi bir çalışma, süper kullanıcı için bir POSTGRES_PASSWORD belirtmektir. "
Docker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.