Amazon web services AWS上nginx和gunicorn的烧瓶应用
我有一个简单的Flask应用程序(只显示“Hello world”),我想将它部署在AWS Elastic BeanStalk上。多个教程展示了使用nginx和gunicorn的部署。 1) 我不明白为什么我们需要使用nginx,gunicorn已经是一个web服务器来取代Flask内置的web服务器。 2) 教程展示了如何构建两个Docker容器:一个用于Flask和gunicorn,另一个用于nginx。为什么我需要两个容器,我可以在一个容器中打包吗?对于两个容器,我不能使用单容器Docker,我需要使用多容器DockerAmazon 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
有什么想法吗?通常在这三种情况下,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应用程序来运行