2014-05-18 19 views
7

Śledzę kilka różnych tutoriali jak oficjalny jednak gdy próbuję zainstalować PostgreSQL w pojemniku I pojawia się następujący komunikat potemInstalacja PostgreSQL w pojemniku Döcker

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"? 

szukałem przez kilka pytań tutaj na SO i przez internet, ale bez powodzenia.

Odpowiedz

4

Problemem jest to, że aplikacja/projekt próbuje uzyskać dostęp do pliku gniazda postgres w maszynie hosta (nie dokowanym pojemnik).

go rozwiązać należałoby albo trzeba wyraźnie poprosić o połączenie TCP/IP podczas korzystania flagę -p skonfigurować port dla pojemnika postgres lub udostępnić gniazdo unix z maching HOST z flagą -v.

: UWAGA: Korzystanie flagę -v lub --volume= oznacza, że ​​dzielą się trochę miejsca pomiędzy hostem a pojemnikiem Döcker. Oznacza to, że jeśli masz zainstalowany postgres na komputerze-hoście i jego uruchamianie prawdopodobnie napotkasz problemy.

Poniżej przedstawiam, jak uruchomić kontener Postgres, który jest dostępny zarówno z gniazda TCP/IP jak i gniazda unix. Również nazywam pojemnik jako postgres.

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

Istnieją inne rozwiązania, ale uważam, że to jeden z najbardziej odpowiedni. Wreszcie, jeśli aplikacja/projekt wymagający dostępu jest również kontenerem, lepiej po prostu połączyć je.

2

Oto instrukcje do mocowania tego błędu, który powinien również pracować dla pojemnika Döcker: PostgreSQL error 'Could not connect to server: No such file or directory'

Jeśli to nie działa z jakiegokolwiek powodu, istnieje wiele z off-the-shelf pojemniki postgresql dokowane można szukać dla odniesienia na Docker Index: https://index.docker.io/search?q=postgresql

Wiele kontenerów zbudowanych jest z zaufanych repo na github. Jeśli znajdziesz taki, który wydaje się odpowiadać Twoim potrzebom, możesz przejrzeć źródło.

projekt

Flynn również zawierał urządzenie postgresql, że może być warto sprawdzić: https://github.com/flynn/flynn-postgres

+0

Dzięki @toddsampson, ale wygląda na to, że błąd, który łączysz, nie jest problemem, ale zdecydowałem się użyć prekonfigurowanego obrazu z rekomendowanego przez ciebie indeksu. Zdaję sobie sprawę, że nie dostarczyłem wielu informacji, ale czy mógłbyś podejrzewać, co może być przyczyną takiego zachowania? – Hevlastka

+1

@Hevlastka Jestem ciekawy: jeśli ta odpowiedź nie dostarczyła rozwiązania, dlaczego ją zaakceptowałeś? W tej chwili trafiam na ten sam problem, a zaakceptowanie odpowiedzi, która nie rozwiązuje problemu, jest nieco frustrujące. – Mihai

+1

@Mihai Przyjąłem to jako odpowiedź, ponieważ postawiło mnie to na właściwej drodze, aby znaleźć rozwiązanie. Okazało się, że błąd, którego doświadczyłem, był tak naprawdę fałszywym, ukrywającym prawdziwy błąd za nim. Spójrz na [oficjalny postgres Dockerfile] (https://github.com/docker-library/postgres/blob/ed23320582f4ec5b0e5e35c99d98966dacbc6ed8/9.4/Dockerfile). W moim przypadku serwer postgres nigdy się nie uruchomił, dlatego musiałem utworzyć niestandardowy skrypt, który został wywołany za pomocą ENTRYPOINT. – Hevlastka

Powiązane problemy