如何在Docker上运行Gunicorn?


在这篇文章中,我们将学习如何在Docker上运行Gunicorn。

在创建具有Gunicorn功能的Docker容器之前,我们必须了解一些关于Web服务器和Gunicorn的基础知识。

Gunicorn简介

假设我们有一个Web服务器,它向用户显示Python代码的输出。这个Web服务器每次收到请求时都会执行Python脚本,这会导致它重启、过载并延迟响应(对于大型脚本来说延迟会非常大)。所以这里我们遇到的真正问题是一个静态服务器,但我们需要一个动态的解决方案。Gunicorn就是上述问题的动态解决方案。

上图解释了问题陈述,下图显示了解决方案的结构。

有一个非常著名的基础架构,它使用Nginx、Gunicorn和Django一起提供动态功能。Nginx解决负载均衡问题,Gunicorn解决静态问题。

在Docker容器上部署

创建Django项目不在本文的讨论范围之内,我们可以创建一个最小化的应用程序并将该Python应用程序存储在Docker容器中。这个Docker容器将安装Gunicorn,我们将在容器上启动Python应用程序。

算法(步骤)

  • 创建一个Python应用程序。

  • 创建一个requirements文件。

  • 创建一个Dockerfile。

  • 执行容器化。

  • 检查服务器输出。

步骤1:创建Python应用程序

创建一个简单的Python应用程序对象,输出“Hello Tutorialspoint!”

示例

def app(environ, start_response): data = b'Hello, Tutorialspoint!
'
status = '200 OK' response_headers = [ ('Content-type', 'text/plain'), ('Content-Length', str(len(data))) ] start_response(status, response_headers) return iter([data])

将此文件保存为myapp.py。

步骤2:创建一个requirements文件

python3 gunicorn

将此文件保存为requirements.txt。

步骤3:创建一个Dockerfile

这个Dockerfile将创建一个完全运行Python和Gunicorn的Docker容器镜像。

将下面的文件保存为Dockerfile(无扩展名)。

示例

FROM python WORKDIR /app COPY ./myapp.py ./ COPY ./requirements.txt ./ RUN pip install --upgrade pip --no-cache-dir RUN pip install –r /app/requirements.txt --no-cache-dir CMD [“gunicorn”,-w” “4,”myapp:app”,--bind” “0.0.0.0:8000]

步骤4:从Dockerfile构建Docker镜像

#docker build –t unicornimage .

步骤5:执行容器化

从unicornimage镜像创建一个Docker容器。

示例

#docker run –itd --name unicorncontainer –p 8000:8000 unicornimage

步骤6:检查服务器是否可以在主机上访问

转到浏览器并搜索localhost:8000以查看输出。

类似地,要创建一个Django项目,请在requirements.txt文件中添加django和gunicorn,然后就可以开始了。

更新于:2022年12月28日

7K+ 浏览量

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.