2016-02-01 107 views
2

我在容器內運行我的應用程序,並映射8080 - > 5000,它的工作原理。不過,我想訪問運行ON HOST系統的Postgres數據庫,而不是其他容器。假設pg在postgres://localhost:5434/mydb上運行 - 我如何可以從我的應用程序容器連接到該數據庫?如何訪問從容器內部在主機上運行的數據庫?

這裏是我的搬運工,compose.yml

web: 
    image: myprofile/myimage:latest 
    ports: 
    - 8080:5000 

回答

0

檢查如何處理在泊塢窗文檔體積

https://docs.docker.com/engine/userguide/dockervolumes/

在Dockerfile

https://docs.docker.com/engine/reference/builder/#volume的音量指示

docker run命令

https://docs.docker.com/engine/reference/commandline/cli/#run

提取

-v, --volume=[] Bind mount a volume

+0

我想連接到RUNS ON HOST的數據庫 – user606521

+0

@ user606521這個答案是有效的!不是一個直接的答案,但可以幫助你想要什麼 –

+0

它不提供任何關於如何將數據庫從主機連接到容器的信息 – user606521

1

的-v不幸的是,不是一個簡單的回答這個問題。

基本上,你有2種選擇:

1)使用volumes,以使容器內可用的插座。

數據庫,比如Postgres的&的MySQL,支持監聽Unix域套接字 而不是TCP套接字。這裏的好處是,你可以 着UNIX域套接字到通過容積的容器安裝 docker run -v

2)使用socat提供本地主機從插座主機內(127.0.0.1)的TCP連接

對於其中只有TCP套接字,我只是把socat到 圖像,並在容器內的背景下啓動它的應用程序(具有 它偵聽127.0.0.1,並轉發到指定的插座)。

主機上的Localhost僅限本地。如果您位於相同的網絡名稱空間中,則只能共享本地主機。 所以你可以使用--net=host或者你不使用localhost

相關問題