AWS上带有nginx和gunicorn的Flask应用程序[重复]
Posted
技术标签:
【中文标题】AWS上带有nginx和gunicorn的Flask应用程序[重复]【英文标题】:Flask application with nginx and gunicorn on AWS [duplicate] 【发布时间】:2019-10-03 23:30:18 【问题描述】:我有一个简单的 Flask 应用程序(只是显示“Hello world”),我想将它部署在 AWS Elastic BeanStalk 上。多个教程展示了使用 nginx 和 gunicorn 的部署。 1)我不明白为什么我们需要使用nginx,gunicorn已经是一个web-server来替换Flask内置的web server。 2) 教程展示了如何构建两个 Docker 容器:一个用于 Flask 和 gunicorn,另一个用于 nginx。为什么我需要两个容器,我可以将所有容器打包在一起吗?有两个容器我不能使用单容器 Docker,我需要使用多容器 Docker。
有什么想法吗?
【问题讨论】:
【参考方案1】:通常在这个三重奏中,nginx 被用作反向代理。
可以将flask+gunicorn+nginx打包在同一个docker容器中:
例如:
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
配置启动 gunicorn
和 wsgi.py
文件作为参数引用 Flask 应用程序运行以上是关于AWS上带有nginx和gunicorn的Flask应用程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章
直接将 AWS ELB 与 Gunicorn 一起使用(没有 nginx)有啥缺点?
如何在 AWS Elastic Beanstalk 上使用 Nginx、React、Webpack、Gunicorn、PostgreSQL、Django 和 DRF 部署应用程序?如何使用此应用程序处
Docker + Gunicorn + Nginx + Django:将非 www 重定向到 AWS Route 53 上的 www