【发布时间】:2018-11-25 09:10:01
【问题描述】:
我是 docker 和 AWS 的新手。我刚刚创建了我的第一个 docker 镜像。该应用程序是一个后端微服务,带有将数据保存在 MySQL 数据库中的 rest 控制器。我在 RDS 中手动创建了数据库,在本地运行容器后,其余 API 在 Postman 中工作正常。
这里是 Dockerfile:
FROM openjdk:8-jre-alpine
MAINTAINER alireza.online
COPY ./target/Practice-1-1.0-SNAPSHOT.jar /myApplication/
COPY ./target/libs/ /myApplication/libs/
EXPOSE 8080
CMD ["java", "-jar", "./myApplication/Practice-1-1.0-SNAPSHOT.jar"]
然后我通过 AWS Beanstalk 部署了 docker 映像。这是 Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "aliam/backend",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "8080"
}
],
"Logging": "/var/log/nginx"
}
一切顺利:
但是现在,我在尝试运行“backend.us-east-2.elasticbeanstalk.com/health”时在邮递员中收到“502 Bad Gateway”。
我查看了 Beanstalk 上的日志,发现应用程序连接到 RDS 数据库时出现问题:
“无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃。”
我试图解决这个问题的方法:
1- 我尝试将 EC2 实例使用的相同安全组分配给我的 RDS 实例,但没有成功。
2- 我尝试在安全组上制定更多入站规则以添加 EC2 实例的公共和私有 IP,但我不确定我应该定义的端口和 CIDR 并且无法实现。
任何评论将不胜感激。
【问题讨论】:
标签: amazon-web-services docker amazon-ec2 amazon-elastic-beanstalk amazon-rds