KUBERNETES集群上有没有标准部署FASK APP,GONICORN和NGINX,因为我是通过dockerfile尝试的,如下所示:
FROM nginx:latest as base-image
RUN apt update
RUN apt -y install python3 python3-pip
RUN apt -y install build-essential
RUN mkdir /app
WORKDIR /app
COPY src src/
COPY src/.nginx/config /etc/nginx/conf.d/default.conf
COPY requirements.txt ./
RUN pip3 install -r requirements.txt
RUN pip3 install -e ./src
RUN pwd
RUN ls -l /app/src
# RUN pytest
EXPOSE 80
WORKDIR /app/src
CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT ["gunicorn" , "--bind","0.0.0.0:8000", "wsgi:app"]
解决方案是在Kubernetes的一个Pod中分别运行两个容器,分别用于Gunicorn和nginx吗?
1条答案
按热度按时间wz3gfoph1#
解决方案是在Kubernetes的一个Pod中分别运行两个容器,分别用于Gunicorn和nginx吗?
是。在Kubernetes中或在本地机器上简单地运行Docker时,最好组合多个容器,而不是试图将所有内容都塞到一个容器中。
您的Docker文件的这一部分:
并不是在做你似乎期待的事情。这两个指令协同工作:
ENTRYPOINT
是容器启动时运行的命令。CMD
的值作为参数提供给ENTRYPOINT
脚本。您可以在官方文档中阅读有关
ENTRYPOINT
的更多信息。更好的设计应该是在您的Python应用程序中使用官方的Python图像:
然后使用官方nginx image运行nginx服务。
一个使用两个容器的示例部署,一个用于您的Python应用程序,一个用于Nginx,可能如下所示:
在上面的部署中,我们从ConfigMap挂载nginx的配置。
您可以找到上述here的完整可部署示例。