我在osx上的docker-compose中进行设置时遇到了问题,即容器无法在自己的docker网络上进行显式设置或仅在默认配置中相互通信。现在我不是Docker专家,但是从我所做的所有阅读中看来,这似乎应该是开箱即用的。
无论如何,请查看我的配置,让我知道我是否缺少某些非常愚蠢的东西。 (我如此希望,因为我需要继续执行下一个任务。)
version: "3"
services:
ui-app:
build: ./src/ui
env_file:
- "./envs/ui-app.env"
ports:
- "3400:3400"
networks:
- local_dev_network
links:
- api-gateway
api-gateway:
build: ./src/api-gateway
depends_on:
- redis
env_file:
- "./envs/api-gateway.env"
ports:
- "5050:5050"
networks:
- local_dev_network
links:
- redis
redis:
image: redis:alpine
ports:
- "6379:6379"
networks:
- local_dev_network
debug:
build: ./src/debug
ports:
- "5001:5001"
depends_on:
- ui-app
- redis
networks:
- local_dev_network
links:
- redis
networks:
local_dev_network:
答案 0 :(得分:1)
我发现您正在使用链接和用户网桥。
不建议使用链接来连接容器以使用网络。 https://docs.docker.com/compose/compose-file/#links
所以
links
,因为您已经创建了local_dev_network
。network_mode
是bridge
,但我也会指定它,因为network_mode: host
与链接不兼容。如果您删除链接,则不需要这种方法,但这是一个好习惯。links:
部分中定义几个条目的原因。您肯定有两个选择:
networks:
部分,并在链接中指定所有容器。 A链接到B,C,D; B链接到A,C,D ...,而不是A链接到B,B链接到C。links:
部分。version: "3" services: ui-app: build: ./src/ui env_file: - "./envs/ui-app.env" ports: - "3400:3400" networks: - local_dev_network api-gateway: build: ./src/api-gateway depends_on: - redis env_file: - "./envs/api-gateway.env" ports: - "5050:5050" networks: - local_dev_network redis: image: redis:alpine ports: - "6379:6379" networks: - local_dev_network debug: build: ./src/debug ports: - "5001:5001" depends_on: - ui-app - redis networks: - local_dev_network networks: local_dev_network:
如果这对您都不起作用,请尝试使用network_mode: host
,当然还要删除links
部分