AWS EC2上的WordPress,带有Docker Compose和AWS RDS MySQL数据库

AWS EC2上的WordPress,带有Docker Compose和AWS RDS MySQL数据库,wordpress,amazon-web-services,docker,amazon-ec2,docker-compose,Wordpress,Amazon Web Services,Docker,Amazon Ec2,Docker Compose,我正在尝试在AWS EC2 Ubuntu18.04服务器上安装WordPress网站,在Docker容器中使用Docker Compose,并使用AWS RDS MySQL数据库,而不是将数据库放在服务器上的另一个容器中 问题是,我似乎无法从网络浏览器连接,无法启动“著名”的WordPress初始设置 我已在EC2安全组上为所有IP地址(例如0.0.0.0)启用入站端口82 这是我的docker-compose.yml文件: version: '3.7' services: wordpres

我正在尝试在AWS EC2 Ubuntu18.04服务器上安装WordPress网站,在Docker容器中使用Docker Compose,并使用AWS RDS MySQL数据库,而不是将数据库放在服务器上的另一个容器中

问题是,我似乎无法从网络浏览器连接,无法启动“著名”的WordPress初始设置

我已在EC2安全组上为所有IP地址(例如0.0.0.0)启用入站端口82

这是我的docker-compose.yml文件:

version: '3.7'
services:
  wordpress:
    # Name of the container this service creates. Otherwise it's prefixed with the git repo name
    container_name: wordpress
    restart: unless-stopped
    image: wordpress:5.4.1-php7.2-fpm-alpine
    env_file: .env
    ports:
      - "0.0.0.0:82:9000" # for bypassing Nginx and testing on port 82
    expose: 
      - 9000 # Default for the Alpine image
    volumes:
      - wordpress:/var/www/html

volumes:
  wordpress:
    external: true
我知道安全设置是正确的,因为我在端口80和81上有其他网站,包括“0.0.0.0:81->5000/tcp”上的Docker“training/webapp:latest”图像/容器

我在.env文件中有数据库连接环境变量:

WORDPRESS_DB_HOST=wordpress.*************.us-west-2.rds.amazonaws.com
WORDPRESS_DB_PORT=3306
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=**********************
WORDPRESS_DB_NAME=wordpress
我知道AWS RDS MySQL数据库使用上述凭据工作,因为我可以通过EC2服务器上Ubuntu中的命令行MySQL程序连接到它,也可以在我的桌面计算机上使用HeidiSQL

当我进入浏览器并键入公共DNS地址(如---.us-west-2.compute.amazonaws.com:82/)或公共IP地址(如:82/)时,它会超时。我尝试在两个地址后添加/wp admin,但它立即超时

我使用的是wordpress:5.4.1-php7.2-fpm-alpine映像,因为在这个概念验证工作完成后,我将使用子域将其放在现有的Nginx反向代理web服务器后面。我被告知Nginx需要PHP FPM映像,我已经在几个教程中看到了它

我只是对浏览器中没有出现任何内容感到震惊。这应该很简单,我一直在做更复杂的事情。我已经听了好几篇教程说了同样的话,但它在浏览器中根本不起作用

非常奇怪的是,如果我在本地桌面计算机上执行完全相同的操作,然后转到localhost:82,则会出现初始WordPress设置。在我的AWS EC2服务器上,我似乎不能做同样的事情


同样,我在EC2服务器上运行了一些其他web应用程序,使用Nginx和端口80和81,因此我知道服务器工作正常,安全设置正确

我明白了。由于某种原因,特定的“fpm阿尔卑斯”图像无法工作。我切换到wordpress:最新图片,效果很好。。。多么愚蠢的解决办法

现在,要使用Nginx配置非FPM映像,只需按照本文中的步骤操作即可,这些步骤解决了我的所有问题

# image: wordpress:5.4.1-php7.2-fpm-alpine
image: wordpress:latest

我想出来了。由于某种原因,特定的“fpm阿尔卑斯”图像无法工作。我切换到wordpress:最新图片,效果很好。。。多么愚蠢的解决办法

现在,要使用Nginx配置非FPM映像,只需按照本文中的步骤操作即可,这些步骤解决了我的所有问题

# image: wordpress:5.4.1-php7.2-fpm-alpine
image: wordpress:latest

尝试在服务器的本地主机上访问,是否超时?还可以检查子网上的NACL设置以及实例上是否运行任何内部防火墙。@mokugo devops if I“curl 127.0.0.1:82”I get“curl:(52)服务器的空回复”;然而,如果我在端口81上为Python培训应用程序Docker容器“curl 127.0.0.1:81”得到“Hello world!”,我将WordPress从端口82更改为81,我知道这是有效的,因为我在端口81上使用的Python“Hello world!”培训应用程序仍然不起作用。我怀疑这是一个安全或防火墙的事情在这一点上,但你永远不知道。如果我运行“docker logs”,我会“[21-May-2020 22:22:35]注意:fpm正在运行,pid 1[21-May-2020 22:22:35]注意:准备好处理连接”,但就是这样,即使在我尝试curl或浏览器之后。@SeanMcCarthy:您也必须导入MySQL CA证书吗?我的RDS实例需要SSL的客户端证书。您知道如何在从桌面本地连接到RDS Aurora时提供此功能吗?我正在使用
wordpress:php8.0-fpm-alpine
imageTry访问服务器的本地主机,是否超时?还可以检查子网上的NACL设置以及实例上是否运行任何内部防火墙。@mokugo devops if I“curl 127.0.0.1:82”I get“curl:(52)服务器的空回复”;然而,如果我在端口81上为Python培训应用程序Docker容器“curl 127.0.0.1:81”得到“Hello world!”,我将WordPress从端口82更改为81,我知道这是有效的,因为我在端口81上使用的Python“Hello world!”培训应用程序仍然不起作用。我怀疑这是一个安全或防火墙的事情在这一点上,但你永远不知道。如果我运行“docker logs”,我会“[21-May-2020 22:22:35]注意:fpm正在运行,pid 1[21-May-2020 22:22:35]注意:准备好处理连接”,但就是这样,即使在我尝试curl或浏览器之后。@SeanMcCarthy:您也必须导入MySQL CA证书吗?我的RDS实例需要SSL的客户端证书。您知道如何在从桌面本地连接到RDS Aurora时提供此功能吗?我正在使用
wordpress:php8.0-fpm-alpine
image