Elastic Beanstalk 上的 Docker - 连接到上游时 connect() 失败(111:连接被拒绝)

Posted

技术标签:

【中文标题】Elastic Beanstalk 上的 Docker - 连接到上游时 connect() 失败(111:连接被拒绝)【英文标题】:Docker on Elastic Beanstalk - connect() failed (111: Connection refused) while connecting to upstream 【发布时间】:2016-11-20 06:01:12 【问题描述】:

我正在尝试在 AWS Elastic Beanstalk(此应用程序:https://github.com/jay3dec/PythonFlaskmysqlApp---Part-1)上运行一个简单的 Sign Up Flask 应用程序,该应用程序连接到托管在 AWS RDS 上的外部 MySQL 数据库。

应用程序在本地完美运行(即使我从本地应用程序连接到 AWS RDS)。

但是当我在命令行中打开 eb 时,我得到:

502 Bad Gateway

nginx/1.8.1

当我做 eb create 时,我收到了警告:

WARN    Only one EXPOSE directive is allowed, using the first one: 3306

因为在我的 Dockerfile 中,我有:

EXPOSE 3306
EXPOSE 5000

对于 eb 日志,我有:

/var/log/nginx/error.log
-------------------------------------
2016/07/17 15:18:06 [warn] 8928#0: duplicate MIME type "text/html" in /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11
2016/07/17 15:18:06 [warn] 8934#0: duplicate MIME type "text/html" in /etc/nginx/sites-enabled/elasticbeanstalk-nginx-docker-proxy.conf:11
2016/07/17 15:20:54 [error] 8937#0: *33 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.6.93, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://172.17.0.2:3306/favicon.ico", host: "flasksecgroup-dev.us-east-1.elasticbeanstalk.com", referrer: "http://flasksecgroup-dev.us-east-1.elasticbeanstalk.com/"

我的 Dockerfile 是:

FROM ubuntu:latest

RUN apt-get update -y
RUN apt-get install -y python-pip libmysqlclient-dev python-dev build-    essential
 COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt

# Expose
EXPOSE 3306
EXPOSE 5000

ENTRYPOINT ["python"]
CMD ["app.py"]

【问题讨论】:

您的安全组中的 3306 端口是否对世界开放。 我打开了所有端口,这个错误消失了,谢谢。 我已经回答了这个问题。如果对您有用,请将其标记为正确。 【参考方案1】:

这是端口和安全防火墙问题。在您的安全组中向世界开放端口 3306 和 5000。它可以正常工作。

【讨论】:

【参考方案2】:

如果您可以将 Dockerfile 添加到存储库,我可以检查一下

【讨论】:

这不是答案。 我在问题中添加了 dockerfile 请将 requirements.txt 添加到 github 仓库 我的 requirements.txt: Flask==0.10.1 Flask-MySQL==1.3 Flask-WTF==0.12 MySQL-python==1.2.5 oauthlib==0.6.1 websocket-client== 0.37.0 Werkzeug==0.10.4 WTForms==2.1 请将此文件推送到仓库,复制粘贴有潜在风险进行测试。

以上是关于Elastic Beanstalk 上的 Docker - 连接到上游时 connect() 失败(111:连接被拒绝)的主要内容,如果未能解决你的问题,请参考以下文章

Elastic Beanstalk 上的 ElasticSearch

AWS Elastic Beanstalk 上的 Spring Boot 并记录到文件

Elastic Beanstalk 上的 SSL

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

如何避免 AWS Elastic Beanstalk 上的 TooManyApplicationVersion 异常?

无法连接到 Elastic Beanstalk 上的 ActionCable