2014-05-18 2 views
7

j'ai suivi plusieurs tutoriels différents, ainsi que l'officiel mais chaque fois que je tente d'installer PostgreSQL dans un conteneur que je reçois le message suivant aprèsPostgreSQL dans un conteneur docker

psql: could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? 

J'ai regardé à travers plusieurs questions ici sur SO et sur Internet, mais pas de chance.

Répondre

4

Le problème est que la votre application/projet tente d'accéder au fichier de prise postgres dans la machine hôte (non docker conteneur).

Pour résoudre un faudrait soit demander explicitement une connexion tcp/ip en utilisant le drapeau -p pour mettre en place un port pour le conteneur Postgres, ou partager la prise unix avec le Maching hôte en utilisant le drapeau -v. L'utilisation du drapeau -v ou --volume= signifie que vous partagez de l'espace entre la machine HOST et le conteneur docker. Cela signifie que si vous avez installé postgres sur votre machine hôte et son fonctionnement, vous rencontrerez probablement des problèmes. Ci-dessous, je montre comment exécuter un conteneur postgres accessible à partir de TCP/IP et un socket Unix. Aussi, je nomme le conteneur postgres.

docker run -p 5432:5432 -v /var/run/postgresql:/var/run/postgresql -d --name postgres postgres

Il existe d'autres solutions, mais je trouve celui-ci le plus approprié. Enfin, si l'application/le projet nécessitant un accès est également un conteneur, il est préférable de simplement les lier.

2

Voici les instructions pour la fixation de cette erreur qui devrait également fonctionner pour votre conteneur docker: PostgreSQL error 'Could not connect to server: No such file or directory'

Si cela ne fonctionne pas pour une raison quelconque, il y a beaucoup de conteneurs postgresql impromptu docker vous pouvez regarder à titre de référence sur l'index Docker:

La plupart des conteneurs sont construits à partir de repos approuvés sur github. Donc, si vous en trouvez un qui semble répondre à vos besoins, vous pouvez consulter la source.

Le projet Flynn a également inclus un appareil de postgresql qui pourrait être utile de vérifier: https://github.com/flynn/flynn-postgres

+0

Merci @toddsampson mais il semble que l'erreur que vous avez liée n'est pas le problème, néanmoins j'ai décidé d'utiliser une image préconfigurée de l'index que vous avez recommandé. Je me rends compte que je n'ai pas fourni beaucoup d'informations mais pourriez-vous soupçonner ce qui pourrait causer un tel comportement? – Hevlastka

+1

@Hevlastka Je suis curieux: si cette réponse ne vous a pas apporté de solution, pourquoi l'avez-vous acceptée? Je suis sur le même sujet en ce moment, et c'est un peu frustrant de voir une réponse acceptée qui ne résout pas le problème. – Mihai

+1

@Mihai J'ai accepté cela comme une réponse parce que cela m'a placé sur la bonne voie pour trouver la solution. Il s'est avéré que l'erreur que j'ai vécue était en fait une fausse cachant la vraie erreur derrière elle. Jetez un oeil à la [Dockerfile] officiel de postgres (https://github.com/docker-library/postgres/blob/ed23320582f4ec5b0e5e35c99d98966dacbc6ed8/9.4/Dockerfile). Dans mon cas, le serveur postgres n'a jamais démarré, donc j'ai dû créer un script personnalisé qui a été appelé en utilisant ENTRYPOINT. – Hevlastka

Questions connexes