2017-01-31 70 views
3

我正在處理一個應用程序以將其移動到Docker。該應用程序有一個反向代理nginx位於前端,用於將呼叫引導至前端應用程序。然後將前端應用程序鏈接到後端Java應用程序。最後有一個mongo db。我不想將mongo db移動到容器中,所以希望我的應用程序直接與mongo db通信。我使用docker-compose將我的容器帶入生活。我的問題是如何使我的容器與使用docker-compose的mongo db進行通信。我已經搜索並找到了下面的鏈接,並將其添加到Docker中。但是我找不到一個可靠的例子。我是一個新的碼頭工人,所以任何幫助將不勝感激。 https://github.com/docker/compose/issues/1110Docker容器與外部數據庫通信

+0

也許extra_hosts? https://docs.docker.com/compose/compose-file/#/extrahosts – Salem

回答

1

首先,最好的做法是將任何持久數據留在圖像之外,所以你做出了一個很好的決定;)。
因此,連接到的是主機上的數據庫,請按照下列步驟操作:

  1. 首先,你必須要找到主機的IP地址泊塢窗網絡。您可以通過在控制檯中鍵入ip a(如果您正在運行某個Linux發行版)或者在運行Windows時輸入ipconfig /all來完成此操作。您可以看到docker bridge適配器旁邊的IP地址(如果您使用的是默認適配器,它應該是docker0,行應該以inet開頭)。
  2. 然後確保數據庫用戶沒有限制被用來通過外部網絡連接。
  3. 當您擁有主機(IP地址),數據庫,數據庫用戶和數據庫密碼時,只需將它們放入應用程序的數據庫配置即可。

應該完成這項工作。

+0

感謝您的回答。我忘了說明我正在Windows主機上運行ubuntu vm,然後在ubuntu vm上運行docker。打字的IP一個給出了內部的IP地址的任何想法? – Asim

+0

數據庫在哪裏?在物理(Windows)機器上還是在虛擬(Ubuntu)機器上?該數據庫位於Microsoft Azure中的 –

+0

。我在本地構建應用程序,稍後將其部署到Azure。 – Asim