Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker-在Apache反向代理容器后面配置PhpMyAdmin容器_Apache_Docker_Phpmyadmin_Docker Compose_Reverse Proxy - Fatal编程技术网

Docker-在Apache反向代理容器后面配置PhpMyAdmin容器

Docker-在Apache反向代理容器后面配置PhpMyAdmin容器,apache,docker,phpmyadmin,docker-compose,reverse-proxy,Apache,Docker,Phpmyadmin,Docker Compose,Reverse Proxy,我想在AWS EC2主机上设置docker容器的配置 我希望有一个Apache反向代理容器,它在端口80、443和8080上接收来自EC2主机的请求,并将其传递给它后面的容器。80和443上的请求应传递到web应用程序容器(具有公开的端口80)。而8080上的端口应传递给运行phpmyadmin的容器(具有暴露的端口80)。我正在使用官方的phpmyadmin/phpmyadmindocker图像 当前正在尝试为本地开发运行此安装程序,其中: 我无法在上打开phpmyadmin 但是,我能够在

我想在AWS EC2主机上设置docker容器的配置

我希望有一个Apache反向代理容器,它在端口80、443和8080上接收来自EC2主机的请求,并将其传递给它后面的容器。80和443上的请求应传递到web应用程序容器(具有公开的端口80)。而8080上的端口应传递给运行phpmyadmin的容器(具有暴露的端口80)。我正在使用官方的phpmyadmin/phpmyadmindocker图像

当前正在尝试为本地开发运行此安装程序,其中:

  • 我无法在上打开phpmyadmin
  • 但是,我能够在上成功地打开web应用程序
在Chrome开发工具中检查请求时,phpmyadmin请求的“状态”显示为“失败”。我无法找出导致请求失败的原因。 如果您能在这方面提供帮助,我将不胜感激

下面是我的配置

环境变量(.dev.env):

# For PHPMyAdmin
PMA_HOST=db
PMA_PORT=3306
PMA_ABSOLUTE_URI=http://localhost:8080/
# Development
version: '3'

services:
  db:<test_database_config>

  proxy:
    build:
      context: .
      dockerfile: Dockerfile.proxy.dev
    env_file: .dev.env
    volumes:
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - db
    env_file: .dev.env
    expose:
      - '80'
    depends_on:
      - db
      - proxy


  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    env_file: .dev.env
    volumes:
      - ./website_content:/var/www/html/website_content
      - ./subdomain_website_content:/var/www/html/subdomain_website_content
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    extra_hosts:
      - "subdomain.localhost:127.0.0.1"
    expose:
      - "80"
    depends_on:
      - db
      - proxy
      - phpmyadmin
<IfModule mod_ssl.c>

<VirtualHost *:80>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_80_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_80_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>

<VirtualHost *:443>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_443_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_443_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>
</IfModule>

<VirtualHost *:8080>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_8080_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_8080_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://phpmyadmin:80/
  ProxyPassReverse / http://phpmyadmin:80/
</VirtualHost>
docker-compose.yml配置:

# For PHPMyAdmin
PMA_HOST=db
PMA_PORT=3306
PMA_ABSOLUTE_URI=http://localhost:8080/
# Development
version: '3'

services:
  db:<test_database_config>

  proxy:
    build:
      context: .
      dockerfile: Dockerfile.proxy.dev
    env_file: .dev.env
    volumes:
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - db
    env_file: .dev.env
    expose:
      - '80'
    depends_on:
      - db
      - proxy


  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    env_file: .dev.env
    volumes:
      - ./website_content:/var/www/html/website_content
      - ./subdomain_website_content:/var/www/html/subdomain_website_content
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    extra_hosts:
      - "subdomain.localhost:127.0.0.1"
    expose:
      - "80"
    depends_on:
      - db
      - proxy
      - phpmyadmin
<IfModule mod_ssl.c>

<VirtualHost *:80>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_80_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_80_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>

<VirtualHost *:443>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_443_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_443_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>
</IfModule>

<VirtualHost *:8080>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_8080_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_8080_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://phpmyadmin:80/
  ProxyPassReverse / http://phpmyadmin:80/
</VirtualHost>
#开发
版本:“3”
服务:
db:
代理:
建造:
上下文:。
dockerfile:dockerfile.proxy.dev
环境文件:。dev.env
卷数:
-/etc/apache2/可用站点:/etc/apache2/可用站点
端口:
- "80:80"
- "443:443"
- "8080:8080"
phpmyadmin:
图片:phpmyadmin/phpmyadmin
链接:
-分贝
环境文件:。dev.env
揭露:
- '80'
取决于:
-分贝
-代理
网状物:
建造:
上下文:。
dockerfile:dockerfile.dev
环境文件:。dev.env
卷数:
-/网站内容:/var/www/html/website\u内容
-/子域网站内容:/var/www/html/subdomain网站内容
-/etc/apache2/可用站点:/etc/apache2/可用站点
额外主机:
-“子域.本地主机:127.0.0.1”
揭露:
- "80"
取决于:
-分贝
-代理
-phpmyadmin
反向代理Apache配置(在已启用的站点中启用配置):

# For PHPMyAdmin
PMA_HOST=db
PMA_PORT=3306
PMA_ABSOLUTE_URI=http://localhost:8080/
# Development
version: '3'

services:
  db:<test_database_config>

  proxy:
    build:
      context: .
      dockerfile: Dockerfile.proxy.dev
    env_file: .dev.env
    volumes:
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - db
    env_file: .dev.env
    expose:
      - '80'
    depends_on:
      - db
      - proxy


  web:
    build:
      context: .
      dockerfile: Dockerfile.dev
    env_file: .dev.env
    volumes:
      - ./website_content:/var/www/html/website_content
      - ./subdomain_website_content:/var/www/html/subdomain_website_content
      - ./etc/apache2/sites-available:/etc/apache2/sites-available
    extra_hosts:
      - "subdomain.localhost:127.0.0.1"
    expose:
      - "80"
    depends_on:
      - db
      - proxy
      - phpmyadmin
<IfModule mod_ssl.c>

<VirtualHost *:80>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_80_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_80_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>

<VirtualHost *:443>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_443_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_443_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>
</IfModule>

<VirtualHost *:8080>
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_8080_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_8080_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://phpmyadmin:80/
  ProxyPassReverse / http://phpmyadmin:80/
</VirtualHost>

ErrorLog${APACHE\u LOG\u DIR}/proxy\u port\u 80\u error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 80\u access.LOG组合
代理主机
ProxyPass/http://web:80/
ProxyPassReverse/http://web:80/
ErrorLog${APACHE_LOG_DIR}/proxy_port_443_error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 443\u access.LOG组合
代理主机
ProxyPass/http://web:80/
ProxyPassReverse/http://web:80/
ErrorLog${APACHE\u LOG\u DIR}/proxy\u port\u 8080\u error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 8080\u access.LOG组合
代理主机
ProxyPass/http://phpmyadmin:80/
ProxyPassReverse/http://phpmyadmin:80/

这没什么大不了的。事实证明,我的反向代理Apache没有配置为侦听端口8080

在我的ports.conf文件中添加了相同内容:

Listen 80
Listen 8080

<IfModule mod_ssl.c>
  Listen 443
</IfModule>
听80
听8080
听我说
docker-compose.yml和环境变量配置没有问题;他们照样工作


另外,对于使用上述apache配置的任何人,这里还有一个小改动-只有端口443的VirtualHost需要位于IfModule内,如下所示:

<IfModule mod_ssl.c>

<VirtualHost *:443>
  #ServerAdmin webmaster@localhost
  #DocumentRoot /var/www/html/
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_443_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_443_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>

</IfModule>

<VirtualHost *:80>
  #ServerAdmin webmaster@localhost
  #DocumentRoot /home/ubuntu/DNZProject/
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_80_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_80_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://web:80/
  ProxyPassReverse / http://web:80/
</VirtualHost>

<VirtualHost *:8080>
  #ServerAdmin webmaster@localhost
  #DocumentRoot /home/ubuntu/DNZProject/
  ErrorLog ${APACHE_LOG_DIR}/proxy_port_8080_error.log
  CustomLog ${APACHE_LOG_DIR}/proxy_port_8080_access.log combined

  ProxyPreserveHost On
  ProxyPass / http://phpmyadmin:80/
  ProxyPassReverse / http://phpmyadmin:80/
</VirtualHost>

#服务器管理员webmaster@localhost
#DocumentRoot/var/www/html/
ErrorLog${APACHE_LOG_DIR}/proxy_port_443_error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 443\u access.LOG组合
代理主机
ProxyPass/http://web:80/
ProxyPassReverse/http://web:80/
#服务器管理员webmaster@localhost
#DocumentRoot/home/ubuntu/DNZProject/
ErrorLog${APACHE\u LOG\u DIR}/proxy\u port\u 80\u error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 80\u access.LOG组合
代理主机
ProxyPass/http://web:80/
ProxyPassReverse/http://web:80/
#服务器管理员webmaster@localhost
#DocumentRoot/home/ubuntu/DNZProject/
ErrorLog${APACHE\u LOG\u DIR}/proxy\u port\u 8080\u error.LOG
CustomLog${APACHE\u LOG\u DIR}/proxy\u port\u 8080\u access.LOG组合
代理主机
ProxyPass/http://phpmyadmin:80/
ProxyPassReverse/http://phpmyadmin:80/

您是否检查了ec2端口8080和443在安全组中打开的位置?实际上,这将用于生产,是的,端口是打开的。目前,我正在尝试为我的开发环境在本地运行此安装程序。