如何将一个端口从 Elastic Beanstalk 映射到我的 Flask 应用程序的 Docker 容器?

Posted

技术标签:

【中文标题】如何将一个端口从 Elastic Beanstalk 映射到我的 Flask 应用程序的 Docker 容器?【英文标题】:How can I map a port from Elastic Beanstalk to my Docker container for my Flask app? 【发布时间】:2020-10-29 01:42:03 【问题描述】:

我的Dockerfile 看起来像:


FROM ubuntu:18.04
RUN apt-get -y update
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update -y
RUN apt-get install -y python3.7 build-essential python3-pip
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV FLASK_APP application.py
COPY . /app
WORKDIR /app
RUN pip3 install --no-cache-dir -r requirements.txt
EXPOSE 5000
ENTRYPOINT python3 -m flask run --host=0.0.0.0

所以我的应用程序在端口 5000 上运行。当我尝试部署到 ElasticBeanstalk 时,如何指定它应该转发到端口 5000?

在我的 ELB 中,我有:

我已经看到了一些使用 Dockerfile.aws.json 的答案,但我认为我不需要它,因为我不会发布我的 Docker 映像。对吗?

在我的应用程序日志中,我看到:

 * Serving Flask app "application.py"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

【问题讨论】:

【参考方案1】:

使用Dockerrun.aws.json v1设置端口。

如果您有自己的Dockerfile,则Image 选项是可选

Ports 选项:

列出要在 Docker 容器上公开的端口。 Elastic Beanstalk 使用 ContainerPort 值将 Docker 容器连接到主机上运行的反向代理

【讨论】:

以上是关于如何将一个端口从 Elastic Beanstalk 映射到我的 Flask 应用程序的 Docker 容器?的主要内容,如果未能解决你的问题,请参考以下文章

将 Docker 部署到 AWS Elastic Beanstalk——如何将端口转发到主机? (端口绑定)

如何让Elastic Beanstalk nginx支持的代理服务器从HTTP自动重定向到HTTPS?

如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?

Elastic Beanstalk - PHP / 强制 HTTPS

使用端口 80 的 AWS Elastic Beanstalk 上的 WebSocket 问题

为 Elastic Beanstalk 环境配置 HTTPS