簡體   English   中英

如何將Docker添加到Django + Gunicorn + Nginx + Fabric

[英]How to Add Docker to Django + Gunicorn + Nginx + Fabric

我正在使用Django和Gunicorn守護進程和Nginx來代理和靜態文件。 我有一個非常簡單的Fabric腳本來“自動化”一些動作:

  1. 我們在本地計算機上使用virtualenv
  2. 我們只將應用程序推送到我們的GitHub倉庫
  3. 我們ssh到服務器,並運行GitHub倉庫中的結構腳本
  4. 它從GitHub拉出,如果需要合並,重新啟動Nginx和Gunicorn

這已經存在問題,例如對於第一次部署,我需要手動從GitHub克隆。

現在,我們處於一個階段,我們的應用程序將發送給我們的客戶,以便他們可以托管自己的服務器(我們可能需要在不久的將來擴展)。 它們需要Docker容器部署在自己的服務器上。 我將與他們的服務器進行ssh連接以更新我們的應用程序的部署。

但是,我很難弄清楚什么是自動化的最佳方式,即每次我們使用Fabric獲得新版本時需要采取的操作順序。

我的建議是創建一個Dockerfile,並在每個提交到一個發布分支都有某種持續集成服務器(Jenkins,CircleCI等)拉你的代碼,運行一組測試,然后構建並發布一個新的Docker鏡像。 如果您需要付款,您可能希望它是私有的 - 這很容易做到,您可以設置私有的docker注冊表。 您甚至可能會發現這是一個比當前內部工作流程更好的工作流程,因為它全部是自動化的。

以下是Dockerfile的外觀示例:

FROM debian:stable
ADD . /code
WORKDIR /code
RUN apt-get update && apt-get install -y python-dev
RUN pip install -r requirements.txt
CMD python run.py

這只是一個例子,我不知道你的代碼是如何構造的,但它假設Dockerfile與一個知道如何運行的腳本run.py對等。 它還假設您想要使用debian:stable - 那里有很多選項,您需要選擇最適合您的選項。 它還假設您在dependency.txt文件中組織了依賴項。 最后,我只是將apt-get放在那里,以顯示如何運行任意命令並可能安裝python的開發人員。

根據結構腳本的復雜程度,Dockerfile可以完全替換它,或者您也可以將結構腳本作為Dockerfile中的一個步驟運行。

您可以在此處找到有關Dockerfile格式的更多信息: https ://docs.docker.com/engine/reference/builder/

編輯:我應該添加 - 顯然有一些決定,你需要做出關於如何支持混合中的nginx,因為典型的docker方式是將其作為第二個圖像和容器 - 這很容易足以做(並且在我看來,一個更好的架構,而不是像現在這樣在一台機器中使用它),但它需要一些關注。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM