我创建了两个Laravel应用程序,每个应用程序都在自己的Docker容器中。它们有一个公共网络(随后,一个应用程序必须通过别名通过网络访问另一个应用程序)。
问题是:在浏览器中,当页面刷新时,使用相同的IP地址,打开一个或第二个应用程序。
Docker版本24.0.6,构建版本ed 223 bc
有谁能解释这个奇怪的行为吗?为什么当我刷新页面时,输出会循环到第二个应用程序?
请参阅以下两个应用程序的Docker设置:x1c 0d1x
当页面更新时,我们在浏览器中看到奇怪的镜像。每次更新后,输出都会切换到第二个应用程序。IP地址不会改变。
的
在第一个应用程序的Docker Desctop nginx日志中,当我更新secod浏览器时,我没有看到任何请求。反之亦然。
例如docker-compose.yml(第二个是相同的,只在容器名称和IP地址不同)
version: '3.8'
services:
nginx:
container_name: app1_nginx
image: nginx:latest
volumes:
- ./:/var/www
- ./_docker/nginx/conf.d:/etc/nginx/conf.d
ports:
- "127.0.0.101:80:80"
depends_on:
- app
networks:
laravel:
app:
container_name: app1_app
build:
context: .
dockerfile: _docker/app/Dockerfile
volumes:
- ./:/var/www
networks:
laravel:
networks:
laravel:
name: "laravel-shared"
字符串
2条答案
按热度按时间k2arahey1#
根据app 1的描述和提供的docker-compose.yml,您似乎试图将两个不同的应用程序绑定到两个不同的IP地址,但在同一个主机端口(80)上。行“127.0.0.101:80:80”表明了这一点。如果第二个应用程序也具有类似的配置,但具有不同的IP,这可能是问题的原因。
我的建议是:
与其使用不同的IP地址,不如考虑将每个应用程序绑定到127.0.0.1上的不同端口。例如,将app 1绑定到127.0.0.1:8080,将app 2绑定到127.0.0.1:8081。这是区分同一主机上的应用程序的更标准的方法。
vjrehmav2#
我找到了一个解决方案。问题是网络设置不正确。我不能确切地说docker是如何工作的,为什么网站会周期性地变化,但似乎原因是使用了相同的网络。
我添加了另一个共享网络,现在一切都正常工作。此外,我在配置中添加了别名,现在每个应用程序都可以使用该别名访问另一个。还在浏览器中访问的主机文件中添加了别名:
字符串
新的配置示例(第二个相同,仅在容器名称和IP地址上有差异):
型