[英]Access localhost of Docker container
我正在 mac 上運行 docker,並試圖為 docker 容器中的 angular 項目設置開發環境。
我的 docker-compose 設置目前如下所示:
version: '3.7'
services:
dev:
build:
context: .
dockerfile: "${DOCKERFILE_DIR}"
working_dir: "${CONTAINER_DIR}"
ports:
- "3000:4200"
- "3001:8080"
volumes:
- "nfsmount:${CONTAINER_DIR}"
tty: true
volumes:
nfsmount:
driver: local
driver_opts:
type: nfs
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
device: ":/System/Volumes/Data/${SOURCE_DIR}"
問題是,當我在 docker 容器內運行ng serve
時,它服務於 docker 容器的localhost:4200
而不是容器的暴露端口。 這意味着"3000:4200"
的端口映射不足以讓我將localhost:3000
從我的主機連接到我的 docker 容器的localhost:4200
。
當然,一個簡單的解決方案就是使用ng serve --host 0.0.0.0
代替我的 docker 容器的0.0.0.0:4200
。 但是,我試圖盡可能地模仿我的開發環境,所以我想知道是否有任何其他方法可以將localhost:4200
連接到我的 docker 容器內的0.0.0.0:4200
(或者更好的是,連接localhost:3000
的我的主機直接到我的 docker 容器的localhost:4200
)。
任何幫助是極大的贊賞!
除非您在容器內使用主機網絡,否則這是不可能的。 當您創建容器時,容器會獲得自己的網絡命名空間。 只有在同一網絡命名空間中運行的進程才能訪問環回接口,即只能從容器內部的進程訪問,因此不能從主機訪問。
您可以使用 docker compose 中的network_mode: "host"
參數在主機網絡中運行它,而不是在單獨的網絡命名空間中運行容器。 如果您堅持不綁定到容器內的 0.0.0.0,這應該適用於您的用例。 - https://docs.docker.com/compose/compose-file/#network_mode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.