我正在使用以下2个docker-compose文件设置以下docker容器:
version: '3.7'
services:
mysql:
image: mysql:5.7
restart: on-failure
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql:rw
ports:
- '${MYSQL_PORT}:3306'
networks:
- shared_mysql
php:
build:
context: .
dockerfile: docker/php/Dockerfile
restart: on-failure
volumes:
- '../:/usr/src/app'
user: ${LOCAL_USER}
networks:
- shared_mysql
api_nginx:
image: nginx:1.15.3-alpine
restart: on-failure
volumes:
- '../public/:/usr/src/app'
- './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
ports:
- '21180:80'
depends_on:
- php
networks:
- shared_mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
restart: on-failure
ports:
- '${PHPMYADMIN_PORT}:80'
environment:
PMA_HOST: mysql
MYSQL_USERNAME: ${MYSQL_USER}
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
networks:
- shared_mysql
volumes:
db_data:
networks:
shared_mysql:
version: '3.7'
services:
php:
build:
context: .
dockerfile: docker/php/Dockerfile
restart: on-failure
volumes:
- '../:/usr/src/app'
user: ${LOCAL_USER}
networks:
- api_21s_shared_mysql
auth_nginx:
image: nginx:1.15.3-alpine
restart: on-failure
volumes:
- '../public/:/usr/src/app'
- './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro'
ports:
- '21181:80'
depends_on:
- php
networks:
- api_21s_shared_mysql
volumes:
db_data:
networks:
api_21s_shared_mysql:
external: true
访问http://localhost:21181/时,我总是会获得正确的网站。
但是当我访问http://localhost:21182/时,我会随机得到http://localhost:21181/或http://localhost:21182/。
我试图单独设置网络。
我希望它与端口号一起使用,但我不希望它们混在一起。
我希望有人能帮助我。预先谢谢你。
答案 0 :(得分:0)
如果您使用Chrome浏览器,则是因为Chrome浏览器缓存页面的方式。如果您使用其他具有已清除缓存的浏览器(例如Firefox),则不会遇到问题。
也可以在隐身(私有)模式下使用Chrome来解决缓存问题。
答案 1 :(得分:0)
使用docker-compose启动服务时,可以通过多种方式在docker网络中发现它们:按服务名称,按容器名称,按IP等。
在您的情况下,请按服务名称使用发现,因为在您的nginx配置中,引用为“ php:9000”。
这时,docker查找名为“ php”的服务并找到2。它将解释为同一服务的副本,并按照轮询模式向其发送流量(第一个请求到服务的第一个实例,第二个请求到服务的第一个实例)服务的第二个实例,第一个实例的第三个实例,第二个实例的第二个实例,等等。
解决方案
以不同的方式命名服务,就像您已经使用nginx服务(auth_nginx和api_nginx)一样。
然后在default.conf中为这两个服务更改对应于php:9000的行。