我有两个django应用。它们都作为两个不同的docker-compose文件的一部分运行。
App 1 docker-compose。yml文件:
services:
django:
build: .
command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]
ports:
- "8013:8000"
volumes:
- ./:/app
depends_on:
- db
App 2 docker-compose。yml文件
services:
django:
build: .
container_name: "web"
command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]
ports:
- "8003:8000"
volumes:
- ./:/app
depends_on:
- db
所以基本上,我的目标是从App 1调用App 2的django端点。为此,在app 1的代码中,我使用urlhttp://web:8003/app2_endpoint
另外,我在两个项目中都有ALLOWED_HOSTS=['*']
然而,我最终与Max retries exceeded
错误。我也遇到过这个问题,但我没能找到解决方法。
如果您没有在撰写文件中指定自定义docker网络,则每个撰写文件将为自己创建一个单独的网络。所以基本上你的分隔组合的容器是看不到彼此的
解决方案可以在撰写文件中使用相同的docker网络。某事:
services:
...
networks:
default:
external: true
name: YOUR_DOCKER_NETWORK
并添加到另一个compose too
这告诉compose默认使用外部docker网络,命名为YOUR_DOCKER_NETWORK
注意你应该自己创建这个网络,因为它是外部的:
docker network create YOUR_DOCKER_NETWORK
你也可以使用自定义网络
Docs in https://docs.docker.com/compose/networking/