无法连接EC2上部署的Docker化Flask应用,求排查方案
问题:Docker化Flask应用部署到EC2后无法通过公网访问
我创建了一个简单的Flask应用,使用Docker容器化后,通过gzip和sftp将镜像推送到EC2实例,已通过docker ps确认容器正在运行:
Flask应用配置为通过8080端口对外提供服务:
if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
对应的Dockerfile中也已暴露该端口:
FROM python:3.10-slim ENV PYTHONUNBUFFERED True ... EXPOSE 8080 CMD exec gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 main:app
确认容器在EC2上正常运行后,我尝试通过浏览器访问实例的公网IPv4 DNS地址加端口:
ec2-digits.region.compute.amazonaws.com:8080
但浏览器返回错误:ERR_CONNECTION_REFUSED
我随即添加了一条入站安全规则,允许任意IPv4流量访问8080端口:
即使重启EC2实例后,再次访问仍出现相同的连接拒绝错误。
我已做过以下验证:
- 通过
pip3 list确认Flask已安装(版本v2.2.2) - 查看
docker container logs my_app未发现任何错误,无论访问8080端口前后,日志内容如下:
[2022-10-25 22:54:37 +0000] [1] [INFO] Starting gunicorn 20.1.0 [2022-10-25 22:54:37 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1) [2022-10-25 22:54:37 +0000] [1] [INFO] Using worker: gthread [2022-10-25 22:54:37 +0000] [7] [INFO] Booting worker with pid: 7
请问我忽略了什么?
内容的提问来源于stack exchange,提问作者John Harrington
相关产品推荐
相关产品推荐

