Ich versuche, mit psql
auf die PostgreSQL-Shell ( docker-compose
) zuzugreifen, aber ich habe einige Schwierigkeiten ... Hier ist meine docker-compose
-Datei:
Ich habe versucht, auf psql
zuzugreifen, indem ich die Dienste main
und postgresdb
durchlaufe, indem ich
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 .:
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:
docker-compose.yml
); main
-Container auf folgende Weise zu: $ docker exec -it main_container_full_name psql -h postgresdb -U docker mydatabase
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:
docker-compoose.yml
%Vor%In Ihrer Docker-Engine-Shell ...
docker ps
Siehe Beispiel unten:
%Vor%Hinweise:
version: '2'
services:
db:
image: postgres
ports:
- "5432:5432"
. . .
Referenzen
Beginnen wir mit einer minimalen docker-compose.yml
-Datei als Referenz:
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
Tags und Links postgresql docker docker-compose