通过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
放在单独的容器中。这是最简单和最可配置的方法。之后,您可以通过容器名称从另一个容器访问一个容器