Docker compose PHP容器需要使用主机头点击nginx代理。怎么用?
我有3个容器。作为nginx反向代理的容器:Docker compose PHP容器需要使用主机头点击nginx代理。怎么用?,docker,nginx,proxy,fastcgi,guzzle,Docker,Nginx,Proxy,Fastcgi,Guzzle,我有3个容器。作为nginx反向代理的容器: nginx-proxy: image: jwilder/nginx-proxy:latest ports: - 80:80 - 443:443 networks: - network 在这之后是该网络上的两个php fpm容器。容器A和容器B分别具有主机名A和B。我还将以下内容添加到本地主机文件: 127.0.0.1 A 127.0.0.1 B 所以我可以从我的本地主机与他们联系。两者都
nginx-proxy:
image: jwilder/nginx-proxy:latest
ports:
- 80:80
- 443:443
networks:
- network
在这之后是该网络上的两个php fpm容器。容器A和容器B分别具有主机名A和B。我还将以下内容添加到本地主机文件:
127.0.0.1 A
127.0.0.1 B
所以我可以从我的本地主机与他们联系。两者都响应fastCGI请求
现在我需要在a中执行Guzzle请求,以转到B。这应该通过nginx代理。如何将条目添加到容器A的hostsfile中,以便对B的请求将转到nginx proxy
,标题为Host:B
。但是增加
extra_hosts:
- "B:nginx-proxy"
不会工作,我找不到任何其他方式,除了硬编码,这是我不想做的明显原因
Docker编写文件:
containerA:
build:
context: 'docker'
volumes:
- .:/var/www/html
- ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
networks:
- network
environment:
VIRTUAL_HOST: containerA
VIRTUAL_ROOT: /var/www/html/public/index.php
VIRTUAL_PROTO: fastcgi
containerB:
build:
context: 'docker'
volumes:
- .:/var/www/html
- ./docker/www.conf:/usr/local/etc/php-fpm.d/zz-docker.conf
networks:
- network
environment:
VIRTUAL_HOST: containerB
VIRTUAL_ROOT: /var/www/html/public/index.php
VIRTUAL_PROTO: fastcgi
nginx-proxy:
image: jwilder/nginx-proxy:latest
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- network
environment:
DEFAULT_HOST: containerA
networks:
network:
driver: bridge
在docker compose文件中,您已准备好将环境变量“VIRTUAL_HOST”放置在容器A和B中
services:
proxy:
........
........
containerA:
........
envirinment:
VIRTUAL_HOST=A
containerB:
........
envirinment:
VIRTUAL_HOST=B
如果你尝试过这个,也许完整的docker文件会对我们有所帮助。
干杯是的,我做到了。但是containerA无法直接联系containerB,因为它只响应来自nginx代理的fastcgi请求。因此路由应该是
containerA->nginx代理,头主机为:containerB->containerB