2017-02-28 106 views
2

我在我的Mac上本地運行postgres.app,並希望我的本地docker容器能夠連接到它。我該如何做到最好?如何讓docker容器可以訪問postgres.app數據庫?

我發現這篇文章建議使用--add-host標誌(Host port with DB to Docker container)將Docker主機的IP地址傳遞給容器。但是,筆記本電腦的IP地址經常更改。沒有一個更簡單的方法來做到這一點?沒有簡單的方法來打開本地端口到容器?

+0

也還可以使用t他在Docker容器子網中的主機網絡地址,缺省情況下爲172.17.0.1。它在Linux主機上運行良好,但我不確定這可以在Mac上使用。 – bekce

+0

@bekce聽起來好像我想嘗試一下。任何指針如何使用我的主機的網絡地址在我的碼頭集裝箱的子網絡? – Malte

+0

那麼,只需嘗試'docker run -it -rm ubuntu',一旦進入:'apt update && apt安裝telnet&telnet 172.17.0.1 5432'並查看它是否可以連接。 – bekce

回答

0

如果我們正在討論開發人員工作站,可以在主機網絡中啓動Docker容器。

docker run --net=host myContainer 

所以你的容器和你的主機運行在同一個棧中,並且應該可以訪問你的postgres.app。

0

從您的容器中,嘗試連接到主機名docker.for.mac.localhost。例如:

psql -U my_user docker.for.mac.localhost -U my_user my_database 

From the docs

Mac也有一個不斷變化的IP地址(或根本沒有,如果你沒有網絡 訪問)。從17.06開始,我們的建議是連接到 特殊Mac僅DNS名稱docker.for.mac.localhost,該名稱將 解析爲主機使用的內部IP地址。

注:這需要多克的Mac >= 17.06.0-ce-mac18, 2017-06-28

2

事情很少

  • 使用docker.for.mac.localhost爲您的主機(這裏假設你有最新的泊塢窗的Mac作爲@Pete提到)
  • 製作確定有這樣的記錄~/Library/Application Support/Postgres/var-9.6/pg_hba.conf

host all all 0.0.0.0/0 trust

  • 改變這一行listen_addresses = 'localhost'~/Library/Application Support/Postgres/var-9.6/postgresql.conf

listen_addresses = '*'

listen_addresses = 'localhost, docker.for.mac.localhost'

相關問題