Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
elastic beanstalk docker应用程序无法连接到mysql_Mysql_Amazon Web Services_Docker_Amazon Elastic Beanstalk - Fatal编程技术网

elastic beanstalk docker应用程序无法连接到mysql

elastic beanstalk docker应用程序无法连接到mysql,mysql,amazon-web-services,docker,amazon-elastic-beanstalk,Mysql,Amazon Web Services,Docker,Amazon Elastic Beanstalk,我有一个ElasticBeanstalk应用程序,它使用Docker运行一个小型的Laravel PHP API 在ElasticBeanstalk中运行时,应用程序无法连接到MySQL MySQL DB是一个公开可用的AWS RDS实例 我已经在本地运行了Docker容器,应用程序可以正常连接 当我部署到ElasticBeanstalk时,应用程序无法连接 有人能告诉我一个方向来帮助调试这个吗 解决方案 对于任何其他偶然发现这一点的人: 解决方案是为EC2实例和RDS数据库创建一个新的安全组。

我有一个ElasticBeanstalk应用程序,它使用Docker运行一个小型的Laravel PHP API

在ElasticBeanstalk中运行时,应用程序无法连接到MySQL

MySQL DB是一个公开可用的AWS RDS实例

我已经在本地运行了Docker容器,应用程序可以正常连接

当我部署到ElasticBeanstalk时,应用程序无法连接

有人能告诉我一个方向来帮助调试这个吗

解决方案

对于任何其他偶然发现这一点的人:

解决方案是为EC2实例和RDS数据库创建一个新的安全组。这两个安全组通过端口3306为实例和数据库打开了访问权限

我还确保EC2实例在每个子网中都可用,并且与我的数据库位于同一VPC中


摘自下面的答案和我的一位SysOps朋友的一点帮助。

您的ec2实例很可能没有分配公共ip。如果您试图在ec2实例上没有公共IP的情况下连接到RDS的公共IP,您将无法连接


ec2实例要么需要一个公共ip,要么需要通过NAT进行外部internet连接

您可能需要检查附加到Elastic Beanstalk的EC2安全组规则,以允许MYSQL类型在端口3306处使用TCP。

谢谢大家!正是安全组,需要允许EC2实例和数据库上的端口3306上的通信量,并且完成了trick@MattDavies那是什么意思?你是怎么做到的?很有趣。。我没有给实例提供公共IP,但是我确实让它们在所有子网和数据库所在的VPC中可用。好像是在耍花招!安全组规则说:“默认情况下,安全组允许所有出站流量”…我有同样的问题,为什么不让我连接?这里有一个相关链接,应该在OP中:这个链接也是:Hi@AlexanderMills这是去年的事,所以我的记忆模糊,但是,我认为“安全组允许所有出站流量”是真的。您需要在您的EC2实例和RDS DB上都允许3306上的入站流量。而且两者都应该在同一个VPC中。。。并且在同一子网上可用。这对你有帮助吗?@MattDavies在这种情况下,你如何设置docker的数据库地址?请分享您是如何定义db address环境变量的。