【发布时间】:2018-12-29 01:38:15
【问题描述】:
我正在使用 docker 编写一个基于 django 的应用程序,其中有 3 个项目应用程序在不同的容器中运行。所有 django 应用程序都运行在0.0.0.0:8000。
但是当我在浏览器中检查容器的 ip 地址以浏览应用程序时,它们都运行在不同的 ip 地址:
project1 在172.18.0.10:8000 运行,可以访问:172.18.0.10:8000/app1
project2 在172.18.0.9:8000 运行,可以在以下位置访问:172.18.0.9:8000/app2
project3 运行在172.18.0.7:8000 可以访问:172.18.0.7:8000/app3
这使我的应用程序的超链接无法使用。如何在一个 ip 'localhost:8000' 上运行所有容器?
有什么建议我哪里出错了吗?
【问题讨论】:
-
您必须使用单个容器。使用 3 个不同的容器时不能使用一个 ip
-
你必须为每个容器
docker run -p一个不同的端口;你不能在同一个端口、Docker 或其他地方运行三个不同的服务。 Docker 内部 IP 地址没有用(它们会在您重新启动容器时更改,并且在其他主机上不可见);不要费心查找它们。 -
无论如何我可以将我的本地主机映射到所有 3 个 ip。然后我可以在浏览器中只使用我的本地主机吗?
-
为什么不使用docker-compose 来统一所有这些应用程序/容器并为它们分配不同的端口?您可以在 localhost 中端口转发这些端口。
-
因为在 docker-compose 中更改端口会搞砸我在实际服务器中的 CI/CD。
标签: django docker docker-compose ip