Docker从容器中访问localhost端口

我有一个容器运行由docker_composes.yml定义的Nuxt.js(Vue.js)应用程序:

 version: '3' services: vue: build: . image: registry.gitlab.com/something/app:${TAG} environment: - apiPath="http://localhost:5000/" - filePath="http://localhost:3000/" ports: - "${EXPOSED_PORT:-80}:${NUXT_PORT:-3000}" restart: always 

该应用程序是一个前端。 我在端口5000上运行本地主机上的后端。 当容器化的应用程序尝试连接到http://localhost:5000/失败。

我有什么select? 我不想将后端放入docker_composes.yml并通过链接连接它们。 如果这是唯一的select,我会的。

一个容器可以相互通信的方式是当它们连接到一个公共networking时。 他们可以使用容器名称互相引用。 示例前端可以使用backend:5000到达后端backend:5000后端是后端容器的名称。

为了实现这一点,使用docker network create app-networknetworking来docker network create app-network 。 使用docker container attach <backend-container> app-network将后端容器连接到此docker container attach <backend-container> app-network 。 最后,将撰写文件更新为以下内容:

 version: '3' services: vue: build: . image: registry.gitlab.com/something/app:${TAG} environment: - apiPath="http://backend:5000/" # replace backend-container name - filePath="http://localhost:3000/" ports: - "${EXPOSED_PORT:-80}:${NUXT_PORT:-3000}" restart: always networks: - app-network networks: app-network: external: true 

你可以尝试使用

network_mode:“主机”

https://docs.docker.com/compose/compose-file/#network_mode

如果你在Windows或Mac上,你应该可以使用:

docker.for.win.localhost
要么
docker.for.mac.localhost