我有一个简单的Flask应用程序(简单地显示"Hello world"),我想把它部署在亚马逊网络服务弹性BeanStalk上。使用nginx和gunicorn进行多教程演示部署。1)我不明白为什么我们需要使用nginx,gunicorn已经是一个web服务器来取代Flask内置web服务器了。2)教程介绍了如何构建两个Docker容器:一个用于Flask和gunicorn,另一个用于nginx。为什么我需要两个容器,我可以打包在一个容器中吗?对于两个容器,我不能使用单容器Docker,我需要使用多容器Docker。
有什么想法吗?
发布于 2019-05-17 00:24:54
通常在这个三人组中,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;"]https://stackoverflow.com/questions/56172747
复制相似问题