【发布时间】:2019-05-18 17:28:49
【问题描述】:
我想在我的 AWS EC2 主机上设置 docker 容器的配置。
我希望有一个 Apache 反向代理容器,它在端口 80、443 和 8080 上接收来自 EC2 主机的请求,并将其传递给它后面的容器。 80 和 443 上的请求应传递到 Web 应用程序容器(暴露端口 80)。而那些在 8080 上的,应该被传递给一个运行 phpmyadmin 的容器(暴露端口 80)。我正在使用官方的 phpmyadmin/phpmyadmin docker 镜像。
目前正在尝试为本地开发运行此设置,其中:
- 我无法在http://localhost:8080/ 上打开 phpmyadmin
- 但是,我能够在http://localhost/ 上成功打开 Web 应用程序
在 Chrome 开发工具中检查请求,将 phpmyadmin 请求的“状态”显示为“失败”。我无法弄清楚是什么导致请求失败。 感谢您对此提供任何帮助。
下面是我的配置。
环境变量(.dev.env):
# For PHPMyAdmin
PMA_HOST=db
PMA_PORT=3306
PMA_ABSOLUTE_URI=http://localhost:8080/
docker-compose.yml 配置:
# 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
反向代理 Apache 配置(启用站点中的启用配置):
<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>
【问题讨论】:
-
您是否检查过您的 ec2 端口 8080 和 443 在安全组中打开的位置?
-
实际上,这将用于生产,是的,端口是开放的。目前,我正在尝试在本地为我的开发环境运行此设置。
标签: apache docker phpmyadmin docker-compose reverse-proxy