Amazon web services AWS上nginx和gunicorn的烧瓶应用

Amazon web services AWS上nginx和gunicorn的烧瓶应用,amazon-web-services,docker,nginx,flask,amazon-elastic-beanstalk,Amazon Web Services,Docker,Nginx,Flask,Amazon Elastic Beanstalk,我有一个简单的Flask应用程序(只显示“Hello world”),我想将它部署在AWS Elastic BeanStalk上。多个教程展示了使用nginx和gunicorn的部署。 1) 我不明白为什么我们需要使用nginx,gunicorn已经是一个web服务器来取代Flask内置的web服务器。 2) 教程展示了如何构建两个Docker容器:一个用于Flask和gunicorn,另一个用于nginx。为什么我需要两个容器,我可以在一个容器中打包吗?对于两个容器,我不能使用单容器Docke

我有一个简单的Flask应用程序(只显示“Hello world”),我想将它部署在AWS Elastic BeanStalk上。多个教程展示了使用nginx和gunicorn的部署。 1) 我不明白为什么我们需要使用nginx,gunicorn已经是一个web服务器来取代Flask内置的web服务器。 2) 教程展示了如何构建两个Docker容器:一个用于Flask和gunicorn,另一个用于nginx。为什么我需要两个容器,我可以在一个容器中打包吗?对于两个容器,我不能使用单容器Docker,我需要使用多容器Docker


有什么想法吗?

通常在这三种情况下,nginx被用作反向代理

可以在同一个docker容器中包装flask+gunicorn+nginx:

例如:

FROM python:3.6.4

# Software version management
ENV NGINX_VERSION=1.13.8-1~jessie
ENV GUNICORN_VERSION=19.7.1
ENV GEVENT_VERSION=1.2.2

# Environment setting
ENV APP_ENVIRONMENT production

# Flask demo application
COPY ./app /app
RUN pip install -r /app/requirements.txt

# System packages installation
RUN echo "deb http://nginx.org/packages/mainline/debian/ jessie nginx" >> /etc/apt/sources.list
RUN wget https://nginx.org/keys/nginx_signing.key -O - | apt-key add -
RUN apt-get update && apt-get install -y nginx=$NGINX_VERSION 
&& rm -rf /var/lib/apt/lists/*

# Nginx configuration
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/nginx.conf

# Gunicorn installation
RUN pip install gunicorn==$GUNICORN_VERSION gevent==$GEVENT_VERSION

# Gunicorn default configuration
COPY gunicorn.config.py /app/gunicorn.config.py

WORKDIR /app

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

非常感谢您的回复。我猜为了让一切正常工作,我需要
nginx
config启动
gunicorn
,并将
wsgi.py
文件作为参数引用Flask应用程序来运行