如何在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+ 瀏覽量

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告