成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

5分鐘將 Django 項目進行容器化管理

開發 項目管理
Dockerizing 容器化 Django 項目可能是一項艱巨的任務。一個復雜的 Django 項目可以有許多活動部分:Django 服務器、數據庫,可能還有 Redis 和 Celery 進程。

[[416793]]

本文轉載自微信公眾號「Python中文社區」,作者MATTHEW 。轉載本文請聯系Python中文社區公眾號。

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

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

Docker 簡介

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

這樣做的好處是:

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

了解 Docker

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

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

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

將 Django 項目 Docker 化

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

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

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

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

入門

首先,安裝Docker。

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

創建第一個項目

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

創建第二個項目

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

我們現在可以使用任何 Cookiecutter 模板來引導項目。在新終端中運行以下命令以使用 Cookiecutter Django創建項目。

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

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

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

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

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

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

TLDR

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

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

了解 Docker 配置

compose 文件夾包含兩個文件夾,一個用于本地開發,一個用于生產。同樣,local.yml 文件用于本地開發,production.yml 文件用于生產。

compose/local 文件夾與 local.yml 文件密切相關。

compose/production文件夾與 production.yml文件密切相關。

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

使用 Docker 運行項目

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

我們使用 Docker-Compose 來構建我們項目的鏡像Image。 Images就像我們Container應用程序的藍圖。

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

運行以下命令構建 Docker Image鏡像:

  1. docker-compose -f local.yml build 

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

如果我們打開 local.yml 文件,會有以下內容:

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

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

在每項服務下都有一些配置選項。

同樣,如果您想深入了解每個命令的細節,請返回 Docker 文檔。如果我們看一下 django 服務,我們有以下內容:

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

這會對服務進行配置,以便它使用特定的 DockerFile。所使用的 DockerFile 來自 compose 文件夾內的local Docker 配置。

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

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

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

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

再看一下 django 服務:

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

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

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

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

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

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

  1. docker-compose -f local.yml up 

這將運行 local.yml 文件中的所有服務。運行此命令后,您可以在瀏覽器中轉到您的本地主機,您應該會看到默認的登錄頁面。

通過此設置,您可以運行 Django 服務器、Postgres 數據庫和文檔。

最終更改

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

環境變量

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

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

  1. pip install django-environ 

數據庫設置

數據庫憑據也作為環境變量包含在內,因此請確保具有正確的數據庫設置。

  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 用于本地開發。此文件指向 compose/local 文件夾,其中包含在本地運行 Docker 所需的所有內容。同樣,我們有 production.yml 用于生產,它使用 compose/production 文件夾。 

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

 

責任編輯:武曉燕 來源: Python中文社區
相關推薦

2012-06-28 10:26:51

Silverlight

2017-07-04 16:23:10

容器ocker技術

2021-06-02 09:12:04

App自動化測試測試自動化

2025-03-18 00:00:00

云原生系統訂單

2020-09-14 11:30:26

HTTP3運維互聯網

2021-04-30 16:23:58

WebRTC實時音頻

2021-01-29 11:43:53

SSHLinux命令

2023-09-07 23:52:50

Flink代碼

2010-11-03 11:01:05

求職面試

2020-11-23 16:23:59

CSS設計技術

2020-12-17 10:00:16

Python協程線程

2011-07-11 09:58:52

2009-11-26 11:19:52

NIS服務器

2021-01-29 11:25:57

Python爬山算法函數優化

2021-03-12 09:45:00

Python關聯規則算法

2020-12-07 11:23:32

Scrapy爬蟲Python

2020-05-15 07:30:08

黑客Thunderbolt漏洞

2020-02-17 13:45:27

抓取代碼工具

2021-03-23 15:35:36

Adam優化語言

2015-05-07 11:31:21

服務器虛擬化深信服
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精选 | 色资源在线| 视频在线亚洲 | 国产特级毛片 | 国产成人精品免费视频大全最热 | 久久久久精 | 日韩高清一区二区 | 国产.com| 中文字幕99| 国产在线不卡 | 国产91精品网站 | 欧美日韩在线观看一区二区三区 | 国产一区三区在线 | 成人做爰www免费看视频网站 | 日韩成人在线网址 | 一区二区三区四区在线免费观看 | 蜜桃视频在线观看免费视频网站www | 欧美成人一级 | 久久精品欧美一区二区三区不卡 | 国产人成精品一区二区三 | 一区福利视频 | 亚洲 欧美 综合 | 高清人人天天夜夜曰狠狠狠狠 | 欧美男人的天堂 | 激情五月婷婷综合 | 亚洲欧美在线观看 | 一区二区国产精品 | 男女羞羞的网站 | 亚洲精品一二三 | 国产精品一码二码三码在线 | 亚洲在线久久 | 亚洲精品1区 | 99久久精品国产一区二区三区 | 在线成人av | 特a毛片| 日韩福利在线 | www.4虎影院| 日韩黄 | 黄色国产视频 | 精品国产乱码久久久久久闺蜜 | 中文字幕av高清 |