访问位于不同Docker容器中的应用,这些容器是不同Docker组合服务的一部分



我有两个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/

相关内容

  • 没有找到相关文章

最新更新