2017-06-13 80 views
0

我有PostgreSQL數據庫在本地運行,並且有一個Docker容器和一個想要連接的應用程序。如何從Docker容器訪問主機數據庫?

如何從Docker內部訪問localhost DB?

docker run --rm -e "DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db" --network="host" -p 4000:4000 my_image 

以上似乎並不奏效。這一個:From inside of a Docker container, how do I connect to the localhost of the machine?

+0

[從Docker容器內部,如何連接到本機的本地主機?](https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container如何做我連接到本地主機) –

+0

你看到什麼錯誤? – Robert

+0

'無法連接:**(DBConnection.ConnectionError)tcp connect(127.0.0.1:5432):連接拒絕 - :econnrefused' – squixy

回答

0

我認爲你的問題是在網絡參數。在文檔中討論 - 網絡

docker run --rm -e "DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db" --network="host" -p 4000:4000 my_image 
+0

實際上沒有區別。 – squixy

+0

您使用的基本圖像是什麼? – German

0

您的設置應該正常工作,所以問題可能與PostgreSQL的配置有關。我能想到的第一個潛在配置設置是bind address。默認情況下,它被設置爲只接受來自localhost的連接,但由於Docker容器將擁有自己的IP地址,PostgreSQL將不接受來自容器的流量。嘗試將其設置爲listen_addresses(0.0.0.0)以查看這是否解決了您的問題。

也要小心總是使用127.0.0.1作爲地址,因爲localhost並不總是工作。

+0

我目前有'listen_addresses ='*''。 – squixy

相關問題