2014-05-18 89 views
7

我一直在下面幾個不同的教程,以及官方的一個但是每當我試圖容器我收到以下消息後安裝PostgreSQL

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

我已經看了內安裝PostgreSQL通過在這裏和整個互聯網上的幾個問題,但沒有運氣。

回答

4

的問題是,你的應用程序/項目正試圖訪問該主機的Postgres的套接字文件(未泊塢窗容器)。

爲了解決這個問題,我們必須在使用-p標誌爲postgres容器設置端口時明確要求tcp/ip連接,或者使用-v標誌共享使用主機加工的unix插槽。

:NOTE: 使用-v--volume=標誌表示您在主機和碼頭箱之間共享一定的空間。這意味着如果你的主機上安裝了postgres並運行,你可能會遇到問題。

下面我將演示如何運行Postgres的容器,既從TCP/IP和Unix套接字訪問。另外,我將容器命名爲postgres

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

還有其他的解決方案,但我覺得這是一個最合適的。最後,如果需要訪問的應用程序/項目也是一個容器,最好將它們鏈接起來。

2

下面是修復該錯誤也應該爲你的搬運工容器中工作的指令:PostgreSQL error 'Could not connect to server: No such file or directory'

如果不以任何理由的工作,有許多現成的現成的PostgreSQL的搬運工容器,你可以看看在上泊塢窗指標參考:https://index.docker.io/search?q=postgresql

許多集裝箱都是從GitHub上值得信賴的回購建。所以如果你發現一個看起來滿足你的需求的人,你可以查看源代碼。

弗林項目還包括PostgreSQL的設備,它可能是值得一試:https://github.com/flynn/flynn-postgres

+0

感謝@toddsampson但好像你鏈接的錯誤是沒有問題的,但我已經決定從您推薦指數使用預配置的圖像。 我意識到我沒有提供太多的信息,但你可能會懷疑是什麼原因導致了這種行爲? – Hevlastka

+1

@Hevlastka我很好奇:如果這個答案沒有爲你提供解決方案,你爲什麼接受它?我現在碰到同樣的問題,看到一個沒有解決問題的答案是有點令人沮喪的。 – Mihai

+1

@Mihai我接受這個答案是因爲它將我放在正確的軌道上來尋找解決方案。原來,我所經歷的錯誤實際上是一個隱藏在它後面的真實錯誤的虛假錯誤。看看[官方postgres Dockerfile](https://github.com/docker-library/postgres/blob/ed23320582f4ec5b0e5e35c99d98966dacbc6ed8/9.4/Dockerfile)。在我的情況下,postgres服務器從未啓動,因此我必須創建一個使用ENTRYPOINT調用的自定義腳本。 – Hevlastka