日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
5分鐘將Django項目進(jìn)行容器化管理

本文轉(zhuǎn)載自微信公眾號「Python中文社區(qū)」,作者M(jìn)ATTHEW 。轉(zhuǎn)載本文請聯(lián)系Python中文社區(qū)公眾號。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),靖宇企業(yè)網(wǎng)站建設(shè),靖宇品牌網(wǎng)站建設(shè),網(wǎng)站定制,靖宇網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,靖宇網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

本教程將向您展示如何在不到 5 分鐘的時間內(nèi)對 Django 項目進(jìn)行 Dockerize 容器化管理。如果您已經(jīng)使用 Django 一段時間了,那么您之前很可能聽說過 Docker。這里有一個 Docker 的快速總結(jié),以及為什么應(yīng)該考慮在你的項目中使用它。

Dockerizing 容器化 Django 項目可能是一項艱巨的任務(wù)。一個復(fù)雜的 Django 項目可以有許多活動部分:Django 服務(wù)器、數(shù)據(jù)庫,可能還有 Redis 和 Celery 進(jìn)程。

Docker 簡介

Docker 是一種非常流行的容器化管理工具。容器很強大,因為每次啟動容器時,您的環(huán)境都以完全相同的方式設(shè)置。

這樣做的好處是:

  • 您的代碼可以在任何支持 Docker 的操作系統(tǒng)上運行。
  • 您無需在主機上配置系統(tǒng)依賴項,從而節(jié)省時間。
  • 您的本地環(huán)境和生產(chǎn)環(huán)境可以完全相同,這樣能夠消除僅在生產(chǎn)中發(fā)生的錯誤。

了解 Docker

本教程并未深入介紹 Docker 的工作原理。相反,本教程將重點介紹如何專門為 Django 設(shè)置 Docker。

如果您想了解有關(guān) Docker 的更多信息,我的建議是閱讀官方指南。這是一個相對較短的教程,但涵蓋了您需要知道的所有內(nèi)容!

https://docs.docker.com/language/python/

將 Django 項目 Docker 化

無論是現(xiàn)有項目還是您正在啟動一個新項目,我們都將使用相同的資源將 Docker 實施到項目中。

我們將要使用的資源是 Cookiecutter Django。 Cookiecutter是一個用于從 cookiecutter(項目模板)引導(dǎo)項目的工具。它在創(chuàng)建新項目時節(jié)省了大量時間,因為它為您配置了大量樣板代碼。

https://github.com/pydanny/cookiecutter-django

Cookiecutter Django 最好的部分之一是它包含 Docker 配置。我們將使用此配置來了解 Docker 是如何在 Django 項目中實現(xiàn)的。

入門

首先,安裝Docker。

我們將創(chuàng)建兩個 Django 項目。第一個將是一個使用 django-admin 命令創(chuàng)建的簡單項目。第二個項目將使用 Cookiecutter Django 創(chuàng)建。

創(chuàng)建第一個項目

 
 
 
 
  1. virtualenv simpleenv
  2. source simpleenv/bin/activate
  3. pip install django
  4. django-admin startproject simpleproject

創(chuàng)建第二個項目

在另一個文件夾中,首先使用 pip install cookiecutter 安裝 Cookiecutter。這將全局安裝 Cookiecutter,以便隨時訪問。

我們現(xiàn)在可以使用任何 Cookiecutter 模板來引導(dǎo)項目。在新終端中運行以下命令以使用 Cookiecutter Django創(chuàng)建項目。

 
 
 
 
  1. virtualenv advancedVenv
  2. source advancedVenv/bin/activate
  3. cookiecutter gh:pydanny/cookiecutter-django

命令 cookiecutter gh:pydanny/cookiecutter-django 以 Cookiecutter命令行用 GitHub 模板 pydanny/cookiecutter-django 創(chuàng)建項目。

此命令將提示您回答有關(guān)要生成的項目的幾個問題。通過按 Enter,您可以將每個答案保留為默認(rèn)值。

當(dāng)提示使用 use_docker 選項時,請確保按“y”,以便使用 Docker 配置項目。

完成所有提示后,將生成一個 Django 項目。我們將專門查看為配置 Docker 創(chuàng)建的文件。這些是:

  • compose文件夾
  • .dockerignore 文件
  • local.yml 文件
  • production.yml文件

TLDR

這就是 Dockerize 容器化管理 Django 項目所需的全部內(nèi)容。只需將這些文件夾和文件復(fù)制到您的其他 Django 項目中并調(diào)整它們,使其指向正確的文件。

如果您想查看更高級的 Docker 配置,請生成一個啟用了 use_celery 標(biāo)志的 Cookiecutter Django 項目。Docker 配置將包括 Celery 和 Redis 的設(shè)置。

了解 Docker 配置

compose 文件夾包含兩個文件夾,一個用于本地開發(fā),一個用于生產(chǎn)。同樣,local.yml 文件用于本地開發(fā),production.yml 文件用于生產(chǎn)。

compose/local 文件夾與 local.yml 文件密切相關(guān)。

compose/production文件夾與 production.yml文件密切相關(guān)。

Docker-Compose 是最需要重點掌握的工具。我們使用它來運行多容器 Docker 應(yīng)用程序。它是安裝 Docker 附帶的命令行程序的一部分。

使用 Docker 運行項目

確保您的計算機上運行了 Docker 應(yīng)用程序,否則以下命令將無法正常執(zhí)行。

我們使用 Docker-Compose 來構(gòu)建我們項目的鏡像Image。 Images就像我們Container應(yīng)用程序的藍(lán)圖。

一旦構(gòu)建了鏡像Image,我們就創(chuàng)建了一個容器Container,它基本上是一個鏡像Image的運行實例。如果我們對項目的依賴項(例如 Python 依賴項)進(jìn)行了任何更改,那么我們需要重建 Image 以使其生效。

運行以下命令構(gòu)建 Docker Image鏡像:

 
 
 
 
  1. docker-compose -f local.yml build

請注意,此命令采用帶有 -f 標(biāo)志的參數(shù)。這告訴 Docker 使用 local.yml 文件作為配置文件。

如果我們打開 local.yml 文件,會有以下內(nèi)容:

 
 
 
 
  1. version: '3'
  2. volumes:
  3.   local_postgres_data: {}
  4.   local_postgres_data_backups: {}
  5. services:
  6.   django:
  7.     build:
  8.       context: .
  9.       dockerfile: ./compose/local/django/Dockerfile
  10.     image: my_awesome_project_local_django
  11.     container_name: django
  12.     depends_on:
  13.       - postgres
  14.     volumes:
  15.       - .:/app:z
  16.     env_file:
  17.       - ./.envs/.local/.django
  18.       - ./.envs/.local/.postgres
  19.     ports:
  20.       - "8000:8000"
  21.     command: /start
  22.   postgres:
  23.     build:
  24.       context: .
  25.       dockerfile: ./compose/production/postgres/Dockerfile
  26.     image: my_awesome_project_production_postgres
  27.     container_name: postgres
  28.     volumes:
  29.       - local_postgres_data:/var/lib/postgresql/data:Z
  30.       - local_postgres_data_backups:/backups:z
  31.     env_file:
  32.       - ./.envs/.local/.postgres
  33.   docs:
  34.     image: my_awesome_project_local_docs
  35.     container_name: docs
  36.     build:
  37.       context: .
  38.       dockerfile: ./compose/local/docs/Dockerfile
  39.     env_file:
  40.       - ./.envs/.local/.django
  41.     volumes:
  42.       - ./docs:/docs:z
  43.       - ./config:/app/config:z
  44.       - ./my_awesome_project:/app/my_awesome_project:z
  45.     ports:
  46.       - "7000:7000"
  47.     command: /start-docs

這個文件是一個配置文件,列出了 Docker 運行我們的多容器應(yīng)用程序所需的一切。注意services部分。共有三種服務(wù); django、postgres 和docs。

在每項服務(wù)下都有一些配置選項。

同樣,如果您想深入了解每個命令的細(xì)節(jié),請返回 Docker 文檔。如果我們看一下 django 服務(wù),我們有以下內(nèi)容:

 
 
 
 
  1. django:
  2.   build:
  3.     context: .
  4.     dockerfile: ./compose/local/django/Dockerfile

這會對服務(wù)進(jìn)行配置,以便它使用特定的 DockerFile。所使用的 DockerFile 來自 compose 文件夾內(nèi)的local Docker 配置。

希望這顯示了所有 Docker 配置是如何連接在一起的。 local.yml 文件包含指向 compose 文件夾內(nèi)特定 DockerFiles 的服務(wù)。除了 DockerFiles 之外,還使用了其他文件。

例如,在 compose/django/Dockerfile 文件的末尾,我們有以下內(nèi)容:

 
 
 
 
  1. ...
  2. COPY ./compose/production/django/entrypoint /entrypoint
  3. RUN sed -i 's/\r$//g' /entrypoint
  4. RUN chmod +x /entrypoint
  5. ...
  6. ENTRYPOINT ["/entrypoint"]

這告訴 Docker,當(dāng) Docker-Compose 使用此 DockerFile 時,它將調(diào)用entrypoint腳本,該腳本可以在 compose/production/django/entrypoint 中找到。打開該文件并查看內(nèi)容。您會看到它基本上在 Postgres 數(shù)據(jù)庫成功連接時記錄日志。

再看一下 django 服務(wù):

 
 
 
 
  1. django:
  2.   build:
  3.     command: /start

django 服務(wù)的一個重要部分是 command 屬性。這告訴 Docker 這個容器的啟動命令是start腳本。我們可以在 compose/local/django 中找到這個文件。在這個文件中,有以下內(nèi)容:

 
 
 
 
  1. #!/bin/bash
  2. set -o errexit
  3. set -o pipefail
  4. set -o nounset
  5. python manage.py migrate
  6. python manage.py runserver_plus 0.0.0.0:8000

這應(yīng)該看起來很熟悉。我們有 Django 遷移和正在運行的服務(wù)器。這里需要注意的是 runserver_plus 命令來自 Django Extensions。如果您沒有安裝該軟件包,您可以將 runserver_plus 替換為 runserver。

注意不要刪除 0.0.0.0:8000,因為容器需要將端口映射到主機。

現(xiàn)在我們了解了 Docker 是如何配置的,最后一部分是運行這個命令來啟動多容器應(yīng)用程序:

 
 
 
 
  1. docker-compose -f local.yml up

這將運行 local.yml 文件中的所有服務(wù)。運行此命令后,您可以在瀏覽器中轉(zhuǎn)到您的本地主機,您應(yīng)該會看到默認(rèn)的登錄頁面。

通過此設(shè)置,您可以運行 Django 服務(wù)器、Postgres 數(shù)據(jù)庫和文檔。

最終更改

您將需要為您的項目配置 Docker 文件。需要注意的一些事項:

環(huán)境變量

Docker Compose 文件將環(huán)境變量文件加載到容器中。這些環(huán)境變量文件存儲在 Cookiecutter Django 生成的 .envs 文件夾中。為了能夠讀取這些值,您需要安裝一個處理環(huán)境變量的包。

Cookiecutter Django 推薦的包是 Django-Environ。您可以使用以下命令安裝此軟件包:

 
 
 
 
  1. pip install django-environ

數(shù)據(jù)庫設(shè)置

數(shù)據(jù)庫憑據(jù)也作為環(huán)境變量包含在內(nèi),因此請確保具有正確的數(shù)據(jù)庫設(shè)置。

 
 
 
 
  1. DATABASES = {"default": env.db("DATABASE_URL")}
  2. DATABASES["default"]["ATOMIC_REQUESTS"] = True

允許的主機

確保您允許的主機包括 localhost。

 
 
 
 
  1. ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1"]

最終 Docker 依賴于兩個組件:Docker-Compose 和 DockerFiles。我們有 local.yml 用于本地開發(fā)。此文件指向 compose/local 文件夾,其中包含在本地運行 Docker 所需的所有內(nèi)容。同樣,我們有 production.yml 用于生產(chǎn),它使用 compose/production 文件夾。

我強烈建議在您自己的項目中使用 Cookiecutter Django。它不僅是專業(yè)開發(fā)的絕佳資源,而且可用于學(xué)習(xí)許多最佳實踐,包括如何在 Django 項目中配置 Docker。


分享名稱:5分鐘將Django項目進(jìn)行容器化管理
文章URL:http://www.5511xx.com/article/cddieod.html