我有一個節點應用程序在一個docker容器中運行,另一個是mongo數據庫,第三個是redis數據庫。在開發過程中,我希望使用這三個容器(不會污染我的系統和數據庫安裝),但在生產中,我希望在本地安裝數據庫,並在泊塢窗中安裝應用程序。不同容器上的Docker應用程序和數據庫
該應用程序假定數據庫正在本地主機上運行。我知道我可以將端口從容器轉發到主機,但是我可以在容器之間轉發端口,以便應用程序可以訪問數據庫嗎?端口轉發不同容器上的相同端口會產生衝突。
我也知道容器將在同一個橋接網絡上,並使用「curl」命令,我發現它們已連接,並且可以使用它們的相關IP地址訪問它們。但是,我希望能夠在不改變代碼中的「localhost」規範的情況下使這個項目工作。
有沒有辦法轉發這些端口?也許在我的應用程序的dockerfile中使用iptables?例如,我希望應用程序的容器能夠使用「localhost:27017」訪問mongoDB,即使它們位於不同的容器中。
我使用Docker for Mac(V 1.13.1)。在生產中,我們將在Ubuntu服務器上使用Docker。
我是一個小菜鳥。感謝您的幫助。
對於訪問數據庫,它是'localhost'還是可以有'db:port'和'redis:port'是至關重要的?然後,根據設置(例如[訪問機器的本地主機](http://stackoverflow.com/a/24326540/2127492)),設置'db'和'redis'的值。 – jrbeverly
您可以使用環境變量來保存這些值地址。 – hya
@Ken你解決了你的問題嗎? – Salem