我在Docker容器中設置了Elixir/Phoenix應用程序,併爲Postgresql服務器設置了單獨的容器。當我公開5432端口時,我只能連接到Postgresql服務器。但我不希望港口公開,因爲這是非常不安全的。 Postgresql服務器應該只能從phoenix容器訪問。Docker:如何在不暴露端口的情況下連接到Postgresql容器
但是,如果我不暴露端口,我只是在鳳凰容器中出現「連接被拒絕」錯誤。
app-phoenix-1 | 2016-03-15T11:41:32.701295542Z ** (Mix) The database for App.Repo couldn't be created, reason given: psql: could not connect to server: Connection refused
app-phoenix-1 | 2016-03-15T11:41:32.701369511Z Is the server running on host "POSTGRES" (10.7.0.7) and accepting
app-phoenix-1 | 2016-03-15T11:41:32.701395350Z TCP/IP connections on port 5432?
我鏈接服務,但沒有得到,爲什麼它不工作。 Postgresql已啓動並正在運行。
Postgres容器的日誌文件中沒有任何內容。
這是我的docker ps
節點上的結果:不知何故Postgres的容器被阻止從我的鳳容器的所有連接
8204a82ca192 myrepo/app "elixir --erl '-smp d" 37 seconds ago Up Less than a second 0.0.0.0:80->4000/tcp app-phoenix-1.585afb94
7a4dded80c36 postgres:latest "/docker-entrypoint.s" 2 hours ago Up 10 minutes 5432/tcp postgres-1.aed0697d
。任何線索如何解決這個問題?
你如何運行容器。如果你用'--link'運行,它應該可以工作。你也應該延遲應用程序容器幾秒鐘,因爲postgres可能需要時間啓動。 –
Postgres運行很長時間。我正在通過docker雲網絡界面部署/運行,但我正在將phoenix容器中的postgres服務鏈接起來。 –
限制來自主機外部的流量是防火牆的工作。在我的情況下,我使用Ubuntu的本地解決方案:ufw。 –