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.
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
@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
@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