我在osx上的docker-compose中设置了一个问题,其中容器无法在自己的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:
我看到你正在使用链接和用户网桥。
不推荐使用链接来连接容器以使用网络。 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
部分