docker-compose: Zugriff auf die Shell von Postgres (psql)

8

Ich versuche, mit psql auf die PostgreSQL-Shell ( docker-compose ) zuzugreifen, aber ich habe einige Schwierigkeiten ... Hier ist meine docker-compose -Datei:

%Vor%

Ich habe versucht, auf psql zuzugreifen, indem ich die Dienste main und postgresdb durchlaufe, indem ich

drücke

docker-compose run postgresdb psql -h postgresdb -U docker mydatabase

aber alles, was ich bekomme, ist psql: could not translate host name "postgresdb" to address: Name or service not known ... was ich nicht verstehe, weil ich postgresdb als Host in der Datenbankkonfigurationsdatei verwende, z. B .:

%Vor%     
aralar 24.04.2015, 16:18
quelle

3 Antworten

2

Sie versuchen, den PostgresDB-Container mit sich selbst zu verbinden, aber der Container kennt den Alias postgresdb , den Sie im Container main eingerichtet haben, nicht.

Betrachten Sie das folgende Beispiel:

%Vor%

Nun sehen Sie, dass Postgresdb nicht weiß, wie postgresdb zu lösen ist. Aber postgresdb sollte trotzdem von main auflösbar sein.

Sie haben mehrere Möglichkeiten, dies zu beheben:

  1. Versuchen Sie, den Hostnamen für Postgresdb explizit festzulegen (in docker-compose.yml );
  2. Greifen Sie auf die PostgresDB vom main -Container auf folgende Weise zu: $ docker exec -it main_container_full_name psql -h postgresdb -U docker mydatabase
Vitaly Isaev 25.04.2015, 09:55
quelle
13

Die Dinge haben sich ein wenig verändert, seit die Frage ursprünglich gestellt wurde.

So können Sie mit docker-compose today auf die PostgreSQL-Shell (psql) zugreifen:

  1. Verwenden Sie eine docker-compose.yml Version '2' Konfigurationsdatei
  2. Verwenden Sie 'depends_on' anstelle von 'links' (neu zu Version '2')
  3. Zerlegen Sie Ihre Container mit "Services"

docker-compoose.yml

%Vor%

In Ihrer Docker-Engine-Shell ...

  1. Suchen Sie die Container-ID (oder den Container-Namen) aus dem Befehl docker ps
  2. Verwenden Sie diese ID, um eine Shell-Eingabeaufforderung zu öffnen
  3. Wechseln Sie den Benutzer zum Postgres-Benutzerkonto
  4. Führen Sie psql
  5. aus

Siehe Beispiel unten:

%Vor%

Hinweise:

  1. docker-compose up startet Dienste in Abhängigkeitsreihenfolge
  2. Wenn Sie einen postgres Container mit dem offiziellen aufstehen wollen Bild, Sie docker-compose.yml könnte mehr wie folgt aussehen:

version: '2' services:
db: image: postgres ports: - "5432:5432" . . .

Referenzen

Ссылка

    
l3x 11.06.2016 16:38
quelle
1

Beginnen wir mit einer minimalen docker-compose.yml -Datei als Referenz:

%Vor%

Du bringst deine Dienste mit docker-compose up auf.

Nehmen wir an, Sie haben eine Datenbank, die Sie mit test verbinden möchten.

Antwort: docker-compose run postgres psql -h YOUR_SERVICE -U YOUR_USER -d YOUR_DATABASE

In unserem Beispiel wäre dies docker-compose run postgres psql -h postgres -U postgres -d test

Alternativ können Sie die Verbindungszeichenfolge von psql verwenden: docker compose run postgres psql -d postgres://YOUR_SERVICE@YOUR_USER/YOUR_DATABASE

    
Tate Thurston 08.01.2018 20:37
quelle