通过Apache代理容器访问同一docker容器上的网站
我在我的通过Apache代理容器访问同一docker容器上的网站,docker,apache,docker-compose,Docker,Apache,Docker Compose,我在我的php72 fpmdocker容器上有两个Symfony web应用程序,为了访问它们,我使用apachehttpd2.4容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dfc5478e67af httpd
php72 fpm
docker容器上有两个Symfony web应用程序,为了访问它们,我使用apachehttpd2.4容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dfc5478e67af httpd:2.4-alpine "httpd-foreground" 58 minutes ago Up 58 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp apache
959daf92b5a1 php:7.2-fpm "docker-php-entrypoi…" About an hour ago Up 58 minutes 80/tcp, 9000/tcp php72-fpm
<VirtualHost *:80>
ServerName website1.local
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/website1/public/$1
DocumentRoot /var/www/html/website1/public
<Directory /var/www/html/website1/public>
AllowOverride All
Require all granted
Options Indexes MultiViews FollowSymLinks SymLinksIfOwnerMatch
DirectoryIndex index.php
</Directory>
</VirtualHost>
现在,当我从前端使用它们时,一切正常,但当我尝试从另一个网站(从后端)访问一个网站时,一切都不起作用。
我的/etc/hosts
文件
0.0.0.0 localhost
0.0.0.0 website1.local
0.0.0.0 website2.local
我的docker compose.yml的一部分
php:
container_name: php72-fpm
image: php:7.2-fpm
build:
context: ./config/php
dockerfile: Dockerfile
volumes:
- ./website1:/var/www/html/website1
- ./website2:/var/www/html/website2
networks:
- backend
apache:
container_name: apache
image: library/httpd:2.4-alpine
restart: always
build:
context: ./config/apache/
dockerfile: Dockerfile
volumes:
- ./website1:/var/www/html/website1
- ./website2:/var/www/html/website2
ports:
- 80:80
- 443:443
links:
- php
networks:
- backend
Apache容器上的website1.local VirtualHost文件
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dfc5478e67af httpd:2.4-alpine "httpd-foreground" 58 minutes ago Up 58 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp apache
959daf92b5a1 php:7.2-fpm "docker-php-entrypoi…" About an hour ago Up 58 minutes 80/tcp, 9000/tcp php72-fpm
<VirtualHost *:80>
ServerName website1.local
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/website1/public/$1
DocumentRoot /var/www/html/website1/public
<Directory /var/www/html/website1/public>
AllowOverride All
Require all granted
Options Indexes MultiViews FollowSymLinks SymLinksIfOwnerMatch
DirectoryIndex index.php
</Directory>
</VirtualHost>
获取网站()或其他容器(apache)的curl正在工作。您应该将website1.local
和website2.local
放在单独的容器中。这是最简单和最可配置的方法。之后,您可以通过容器名称从另一个容器访问一个容器