Der gitlab ci-Fehler konnte den Hostnamen "postgres" nicht in eine Adresse übersetzen: Der Name wird nicht aufgelöst

8

Ich benutze gitlab-ci in meiner Rails-App, es lief bis gestern korrekt, aber es geht nicht vorbei aufgrund von:

rake aborted!
PG::ConnectionBad: could not translate host name "postgres" to address: Name does not resolve
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `initialize'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `new'
/usr/local/bundle/gems/pg-1.1.4/lib/pg.rb:56:in `connect'
....
Tasks: TOP => db:schema:load => db:check_protected_environments

.gitlab-ci.yml:

rspec:
  stage: test
  services:
    - postgres:10
  variables:
    DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB"
    POSTGRES_DB: db_test
    RAILS_ENV: test
  before_script:
    - ruby -v
  script:
    - cp config/application.sample.yml config/application.yml
    - cp config/database.sample.yml config/database.yml
    - bundle exec rake db:schema:load
    - bundle exec rspec spec

Es scheint, dass der Postgres-Dienst nicht ausgeführt werden kann oder aus irgendeinem Grund der Datenbankdienst nicht ordnungsgemäß ausgeführt wird. Ich denke, einige Interna haben sich in gitlab-ci geändert.

Alireza Mohagheghi
quelle
Das gleiche Problem tritt auch bei der Django-App auf. Auf jeden Fall hat sich etwas Internes geändert.
Ojas Kale

Antworten:

9

BEARBEITEN: Dies war eine beabsichtigte Änderung an den Bildern. Sie müssen jetzt ein Passwort festlegen oder weiter konfigurieren:

Wenn Sie wissen, dass Sie unsicher sein möchten (dh jeder kann von überall aus eine Verbindung ohne Kennwort herstellen), entscheiden Sie sich für POSTGRES_HOST_AUTH_METHOD = trust.


Dies scheint eingeführt worden zu sein, als die Docker-Images auf die neuen Versionen aktualisiert wurden .

Sie können stattdessen das 10.11-Bild ziehen, um dieses Problem vorerst zu vermeiden:

services:
- postgres:10.11

Ich bin mir nicht sicher, warum dies geschieht, aber wir erleben dasselbe seit dem letzten Docker-Image-Update . Ich habe festgestellt, dass dies auch von 12.1 bis 12.2 der Fall ist.

brxck
quelle
3

postgres hat zwei erforderliche Umgebungsvariablennamen, POSTGRES_USERund POSTGRES_PASSWORDwenn Sie diese nicht angeben, wird der Container nicht ausgeführt.

gitlab-ci Dokumentation zu Diensten

moe zarrinfam
quelle
1
Ihre Antwort ist auch richtig, vielen Dank.
Alireza Mohagheghi