paint-brush
如何快速 Docker 化和部署工作 Django 用途步骤 經過@abrahamdahunsi
11,380 讀數
11,380 讀數

如何 Docker 化和部署 Django 应用程序

根据 Abraham Dahunsi 15m2023/10/14
Read on Terminal Reader

太長; 讀書

在本教程中,您学习了如何使用 Docker、Django 和 Heroku 对 Django 应用程序进行 Docker 化和部署。您了解了 Docker 如何帮助您为应用程序创建隔离且可重现的环境,以及 Heroku 如何简化部署过程。 您还学习了如何使用 Docker Compose 管理多个容器和服务,以及如何为不同环境配置 Django 设置。
featured image - 如何 Docker 化和部署 Django 应用程序
Abraham Dahunsi  HackerNoon profile picture
0-item
1-item
Docker 就是一名用做实现、工作和派发软件软件过程的渠道。它不是可以您将软件软件过程和其他依赖感项解压到一名容器类中,后来是可以在其中配置了 Docker 的确定机器上工作。


这会让 Docker 当上推广 Web 软件执行程序流程的理想化决定,如果它可轻松愉快地将软件执行程序流程从一款 条件中移动到另外款 条件,而不用办理顾虑很多兼容情况。


另个地方,Django 都是个 Python Web 框架的,也可以简单打造强悍且可括展的 Web 应用领域程度。 Django 保证了成千上万开盖即用的能力,列如 用户组个人信息核实整体、数值库抽象主义层和范例引挚。


这表明 Django 的零基础愈来愈最易,以及高速、方便地构筑简化的 Web APP程序流程图。


Docker 化和研究部署 Django 广泛应用执行程序是一个个相对性轻松的阶段。包括的基本方法步骤是:


1. 为您的 Django 广泛打包安装程序流程图使用 Dockerfile。 2. 从 Dockerfile 勾勒 Docker 映像。 3. 将Dockeriso镜像布署到产量生活环境。


在下面中,我将仔细牵引您达到 docker 化和谋划 Django 应运应用软件设置涉及到及的步凑。我将可以提供一个在生產区域中谋划 Django 应运应用软件设置的小技巧和更优实践教学。

先决条件

要会习本入门教程,您是需要需求接下来先决情况:


  • Python 3.9 或更高版本
  • 码头工人
  • Docker 组合
  • git


假若您想将 Django 操作方式构建到生产加工情况,您还想要云和托管提拱商,举例说明 AWS、Azure 或 Google Cloud Platform。但在本技巧中,我将在使用 Heroku。


迟早会按装了那些先决條件,您就能够 已经 Docker 化和安排 Django 技术软件包流程图了!

创建 Django 项目

要启动一个新的 Django 项目,您需要使用django-admin命令。此命令允许您为 Django 应用程序创建项目目录和一些基本文件。例如,如果您想创建一个名为my_project的项目,您可以在终端中运行以下命令:


django-admin startproject my_project


这将构建的名里“my_project”的名录,其型式相应:



我的活动/


├── 工作.py


└── 内容/


├──在里面.py


├── 设为.py


└── urls.py


manage.py文件是一个脚本,允许您为项目执行各种任务,例如运行开发服务器、创建数据库迁移和测试代码。 project/目录包含项目的设置和配置文件。


settings.py文件定义项目的主要设置,例如数据库连接、安装的应用程序和中间件。 urls.py文件将项目的 URL 映射到应用程序的视图。


使用新的 Django 该业务后,您能能能够 执行開發安全工作器配置在本机检验它。開發安全工作器配置有的是个非常简单的 Web 安全工作器配置,在您的换算飞机上执行作为您的该业务文件目录给出安全工作。要重启開發安全工作器配置,请在刷卡设备中执行下类命令提示符:


python manage.py runserver


缺省前提下,这将在接口 8000 上打火服務器。进而您可不可以张开看器并转到检查缺省的 Django 首页导航。

Django项目的基本结构和文件

Django 投资工作由两个资料和导航结构,二者定位 Web 用小程序的功能性和外光。 Django 投资工作的基本模块是:


manage.py :一个脚本,提供用于管理项目的各种命令,例如创建应用程序、迁移数据库和测试代码。


project/ :包含项目的设置和配置文件的目录。该目录下的主要文件有:

 `settings.py`: A file that defines the main settings for your project, such as the database connection, the installed apps, and the middleware. You can customize this file to suit your needs and preferences. `urls.py`: A file that maps the URLs of your project to the views of your apps. You can define different URL patterns for different parts of your web application.


apps/ :包含组成项目的所有 Django 应用程序的目录。每个 Django 应用程序都是一个单独的 Python 包,为您的 Web 应用程序提供特定的功能或特性。您可以创建自己的应用程序或使用第三方来源的现有应用程序。

本地测试项目

要在原生各种测评投资工作,可能操作开拓产品器或Django带来了的各种测评知识体系。开拓产品器也是个简略的 Web 产品器,在您的算起机器上正常电脑运行作为您的投资工作相关文件带来了产品。各种测评知识体系也是个允许的您为编码创作和正常电脑运行单位各种测评的方式。


要操作规划设计业务器,您能够在电子设备中运作下述指令:


python manage.py runserver


设置要求条件下,这将在端口设置 8000 上开机产品器。进而,您需要拉开网页流览器,并转到“//localhost:8000/”来查询设置要求的 Django 网页。


要用测验构架,您不错在手持终端中执行以內ps命令:


python manage.py test


这将工作您活动的很多模块各种测试英文。如很多各种测试英文都依据,您将看到了以下几点最新消息:



 Ran 1 test in 0.001s Ok


这样每测评失敗,您将看看一点异常短信,另外构成关以失敗的图解短信。您能否使用的此短信来操作和牙齿修复您的源代码。


在本地服务考试项目流程并对报告感觉到放心后,您就可以将其投放到生产方式学习环境。

Docker 化 Django 项目

什么是 Dockerfile?

Dockerfile 也是个文档zip文件,表中这当中涉及到关于 该怎样构筑 Docker 映像的说。 Docker 映像也是个单独的可执行工作包,表中这当中涉及到加载适用编译程序所要的万事万物:代码怎么用、加载时、体统产品、体统库和安装。


要建设 Dockerfile,您必须制定理论知识映像、使用营养系统包营养行驶的下令和无法应运编译程序营养行驶的下令。

Django 项目的示例 Dockerfile

一些是 Django 产品的 Dockerfile 举例:


 FROM python:3.9 #Install Django and other required packages RUN pip install django # Copy the Django project files into the image COPY ./app # Set the working directory WORKDIR /app # Start the Django development server CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]



此 Dockerfile 将倡导一位其中包含 Python 3.9、Django 和 Django 建设项目文件资料的 Docker 映像。该映像将运行环境为在网络端口 8000 上开始 Django 开拓业务器。

什么是 docker-compose.yml 文件?

docker-compose.yml 相关文件格式就是个 YAML 相关文件格式,它概念构成的 Docker 化适用执行程序的服务于培训。服务于培训就能够是独立 Docker 不锈钢溶器或1组 Docker 不锈钢溶器。


要以 Django 項目新创建 docker-compose.yml 文件格式,您需要构成 Web 保障和参数库保障。 Web 保障将运转 Django 应该用软件软件环节,参数库保障将运转 Django 应该用软件软件环节在使用的参数库。

Django 项目的示例 docker-compose.yml 文件

以内是 Django 建设项目的 docker-compose.yml 文书例子:


 version: "3.9" services: web: build: ports: -"8000:8000" volumes -./:/app db: image: postgres:14.0-alpine volumes: -./postgres:/var/lib/postgresql/data



此 docker-compose.yml 文件定义了两个服务: webdbweb服务将从我们在上一节中创建的 Dockerfile 构建 Docker 映像。 web服务还将在主机上公开端口8000,以便我们可以访问Django开发服务器。


db服务将使用官方 PostgreSQL Docker 镜像。 db服务还将主机上的postgres目录挂载到容器内的/var/lib/postgresql/data目录。这将确保数据库文件在容器重新启动之间保留。

构建并运行 Docker 容器

要构造 并程序运行 Docker 收纳空间,他们需要利用以下的命令提示符:


docker-compose up -d


此指令将为“web”和“db”的保障建设方案 Docker iso镜像(若我们尚不有)。最后,该指令将启动保障器“web”和“db”的保障的 Docker 干净的器皿。

本地测试 Docker 化的 Django 项目

Docker 金属罐行驶后,我们都就可以实用 Web 查询记录器在原生測試 Dockerized Django 产品。使用 微信网络查询记录器,接下来导行到“//localhost:8000”。您现下应当才能发现 Django 开拓手机网页。


您还可以通过//localhost:8000/admin/登录 Django 管理页面。用户名和密码默认为adminadmin

部署 Django 项目

现下,是时运用 Git、GitHub 和 Heroku 将 Django 活动部暑工作到云app了。您还将运用 Web 查询器测量已部暑工作的 Web 使用步骤。

什么是 Git,为什么我们需要它?

Git 有的是个应用方法,能够助力您菅理活动的源码。它准许您监控对码所做的调整,与一些研发职工合作,并在产生现象时灰复到很久以前的版本的。


Git 还能接受您将编号发布到远程访问保存库,这类 GitHub,您能够在里面保存编号并和它所有人共享服务编号。

如何创建 GitHub 存储库并将我们的代码推送到 GitHub?

若是您现已打造了 GitHub 储存方式库,请缺少下例主要内容。


会帮您的 Django 该项目创造 GitHub 储存库,您还要连接这过程:


- 在上开启不花钱个人帐户


- 转到您的个人资料页面,然后单击“存贮库”旁边的“新砌的”按钮。


- 为您的存储库命名,例如django-docker-app ,并可选择添加描述。


- 单击搭建保存库按钮。


当今您都以及在 GitHub 上創建好几个个空存贮库。要将编码微信推送到此存贮库,您要有在网络终端中的使用“git”指令。我选用您都以及在本机确定机里装配了 Git,并在 Django 工作文件目录夹中起始化了 Git 存贮库。若是不,请输入照非官方实行操作方法。


要将编号远程推送到 GitHub,您都要审理低于流程:


- 转到终端中的 Django 项目文件夹,然后输入git status以查看存储库的当前状态。你应该看到这样的东西:


 On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt no changes added to commit (use "git add" and/or "git commit -a")


这意味着您有一些已修改的文件未暂存以供提交。要暂存它们以进行提交,您需要使用git add命令。


- 输入git add 。暂存所有修改的文件以供提交。或者,您可以指定我们要暂存的文件名,例如git add Dockerfile docker-compose.yml requirements.txt


- 再次输入git status以查看存储库的更新状态。你应该看到这样的东西:


 On branch main Your branch is up to date with 'origin/main'. Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: Dockerfile modified: docker-compose.yml modified: requirements.txt


这意味着您有一些需要提交的更改。要提交它们,您需要使用git commit命令。


- 键入git commit -m "Add Docker configuration files"以提交分阶段更改,并包含一条描述我们所做操作的消息。或者,您可以省略-m标志并在编辑器中输入较长的消息,该编辑器将在键入git commit后打开。


- 再次输入git status以查看存储库的最终状态。你应该看到这样的东西:


 On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean


这意味着您有一个提交尚未推送到远程存储库。要推送它,您需要使用git push命令。


- 输入git push origin main将本地提交推送到 GitHub 上的远程存储库。


或者,您可以指定要推送的远程名称和分支名称,例如git push origin main


软件系统或者会规定您发送 GitHub 大家名和帐号密码,或施用个体访问浏览令牌来安全验证您的角色。


- 转到您的 GitHub 存储空间库网站页,第二自动更新它。您想必在网站页上可以看到您的码和提高消息报。


您不复功将二维码分享到 GitHub。现代,您就能够立刻下三步,即将迎来 Django 新项目召开会议到 Heroku。

什么是 Heroku,为什么需要它?

Heroku 是一种个云软件,可让您堡垒机被部署、工作管理和寻址 Web 应运子程序。它扶持各个代码程序语言、前端框架和信息库,如Python、Django和PostgreSQL。


它还打造各种类型功效和额外添加控件来怎强我们大家的 Web 制作效果,列如 笔记记下、摄像头、平缓、健康安全稳定等。


您要求 Heroku,根据它使您的谋划历程觉得更不累、速度快。您应该运行 Heroku 谋划 Django 业务,而没有害怕社会底层依据油烟净化器,列如服务性器、电脑网络或操作步骤整体。


您还就不错的使用 Heroku 跟据视频流量和标准扩容您的 Web 应用软件代码。 Heroku 就不错为您正确处理 Web 推进的拥有繁复性和桃战。

如何创建 Heroku 帐户并安装 Heroku CLI 工具?

要新创建 Heroku 银行帐户,您必须要 可以依照以內步进行:


- 转到并单击“注册帐号”按钮。

- 填表必填信息,举例人名、电商电邮、帐号密码等。 - 使用主要的激发语言学,这类 Python。

- 单击“创立了勉费的账号”按钮。

- 全面检查让企业的电子元器件信息并单击环节以认证让企业的企业账户。


现如今,您以及建立新一个不花钱的 Heroku 账号。要布置 Heroku CLI 产品,您需用依照规定低于过程运作:


- 转到 [ ,而且为企业的进行操作操作选择有效的装置程序流程,诸如 Windows、Mac OS X 或 Linux。


- 进行下载并开机运行重新安装软件,接着决定霸屏上的说明书进行运行。


- 打开终端,然后输入heroku --version以验证安装是否成功。你应该看到这样的东西:


heroku/7.59.0 win32-x64 node-v12.21.0


现时,您已在本地人计算出来机子装有了 Heroku CLI 方法。您会施用此方法从用户与 Heroku 沟通互动。

如何创建 Heroku 应用程序并配置所需的设置?

想为 Django 内容建设 Heroku 操作子程序,企业必须要 下达以内方法流程:


- 转到终端中的 Django 项目文件夹,然后输入heroku login以使用 Heroku CLI 工具登录到您的 Heroku 帐户。系统可能会要求您输入电子邮件和密码,或使用网络浏览器来验证您的身份。


- 输入heroku create django-docker-app以创建一个名为django-docker-app新 Heroku 应用程序。或者,您可以省略名称,让 Heroku 为您生成一个随机名称。你应该看到这样的东西:


 Creating ⬢ django-docker-app... done //django-docker-app.herokuapp.com/ | //git.heroku.com/django-docker-app.git


这表明着您己经创立一堆个代有 Web URL 和 Git URL 的新 Heroku 采用子程序流程。 Web URL 是您应该登陆已安排的 Web 采用子程序流程的座位,Git URL 是您应该将编码更新到 Heroku 的座位。


- 输入heroku config:set SECRET_KEY=<your_secret_key>为 Django 项目的SECRET_KEY设置设置环境变量。您需要将<your_secret_key>替换为可以使用等工具生成的随机字符串。


或者,您可以使用settings.py文件中现有的密钥,但出于安全原因,不建议这样做。


- 输入heroku addons:create heroku-postgresql:hobby-dev将免费的 PostgreSQL 数据库插件添加到您的 Heroku 应用程序中。这将为您的 Django 项目创建一个新数据库,并为您的 Django 项目的DATABASE_URL设置设置一个环境变量。你应该看到这样的东西:

 Creating heroku-postgresql:hobby-dev on ⬢ django-docker-app... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-curved-12345 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation


这意味着您已经添加了一个名为PostgreSQL-curved-12345和 URL DATABASE_URL 的PostgreSQL 数据库插件。


- 输入heroku config以查看您为 Heroku 应用程序设置的环境变量列表。你应该看到这样的东西:


 === django-docker-app Config Vars DATABASE_URL: postgres://<username>: <password>@<host>:<port>/<database> SECRET_KEY: <your_secret_key>


这意味着您有两个环境变量DATABASE_URLSECRET_KEY ,您可以在 Django 项目设置中使用它们。


如今您都创立了了 Heroku 应用领域环节并标准配置了 Django 項目所要的制定,您可依然下两步,已经 Django 項目安排到 Heroku。


如何使用“ heroku ”命令将 Django 项目部署到 Heroku?


要使用heroku命令将我们的Django项目部署到Heroku,您需要执行以下步骤:


- 转到终端中的 Django 项目文件夹,然后输入heroku container:login以使用 Heroku CLI 工具登录到 Heroku 容器注册表。这将允许您将我们的 Docker 镜像推送到 Heroku。


- 输入heroku container:push web -a django-docker-app来构建 Docker 镜像并将其推送到 Heroku。您需要指定 Heroku 应用程序的名称,在本例中为django-docker-app 。你应该看到这样的东西:


 === Building web (Dockerfile) Sending build context to Docker daemon 1.024kB Step 1/9 : FROM python:3.9-slim ---> 7f5b6ccd03e9 Step 2/9 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 64b5d0e40a22 Step 3/9 : RUN mkdir /code ---> Using cache ---> 4d8c638f2b6c Step 4/9 : WORKDIR /code ---> Using cache ---> e69c02a028cd Step 5/9 : COPY requirements.txt /code/ ---> Using cache ---> 8f0f3e0f2d8c Step 6/9 : RUN pip install -r requirements.txt ---> Using cache ---> 0f7b497d81ed Step 7/9 : COPY . /code/ ---> Using cache ---> c0a8e9a32b16 Step 8/9 : EXPOSE 8000 ---> Using cache ---> a1d36a4a2da4 Step 9/9 : CMD ["gunicorn", "django_docker.wsgi", "--bind", "0.0.0.0:8000"] ---> Using cache ---> f7f3c0418a1d Successfully built f7f3c0418a1d Successfully tagged registry.heroku.com/django-docker-app/web:latest === Pushing web (Dockerfile) The push refers to repository [registry.heroku.com/django-docker-app/web] f7f3c0418a1d: Pushed latest: digest: sha256:6cbbf22cf6aa60e0343e6d8e7c4c2eeb2e cb8fd5e82a42dfe5f4aeeb15af89ec size: 528 Your image has been successfully pushed. You can now release it with the 'container:release' command.


这预兆着您已实现了 Docker 镜象并将其推荐到 Heroku。


- 输入heroku container:release web -a django-docker-app将 Docker 镜像发布到 Heroku 应用程序。你应该看到这样的东西:


 Releasing images web to django-docker-app... done


这后果着您现已 Docker 映像颁布到 Heroku 广泛exe文件代码。


- 输入heroku run python manage.py migrate -a django-docker-app在 Heroku 应用程序上运行数据库迁移。这将为 PostgreSQL 数据库上的 Django 项目创建必要的表和索引。你应该看到这样的东西:


 Running python manage.py migrate on ⬢ django-docker-app... up, run.1234 (Free) Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions, polls Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK


这代表着您已在 Heroku 应用应用上工作数据显示库转化。


- 输入heroku open -a django-docker-app在 Web 浏览器中打开我们部署的 Web 应用程序。您应该看到我们的 Django 项目在 Heroku 上运行。


您已使用heroku命令成功将 Django 项目部署到 Heroku。您现在可以享受您的 Web 应用程序并与其他人共享。

结论

在本步奏中,您学习知识了该怎样选用 Docker、Django 和 Heroku 对 Django 运用工作做出 Docker 化和实施。您理解了 Docker 该怎样促进您为运用工作创建活动防护隔离且可初现的环境,各类 Heroku 该怎样简化版实施工作。


您还学习知识了该要怎样食用 Docker Compose 方法多容器类和服務,及其该要怎样为不相同大环境安装 Django 布置。


Docker 化和的部署 Django app流程都可以有大多作用,假如:


- 更快的制作和检验时间- 更便捷地通力合作和手机共享代碼- 跨网络平台高度且可靠性的耐磨性- 资源共享的可映射性和迟钝性- 稳定性和依赖于防护隔离


继续阅读:CI/CD 对于快速可靠的软件交付至关重要。要优化 CI/CD 管道以实现最大效率,请选择正确的工具、简化工作流程、使用自动化测试和 QA、并行化构建、使用监控和反馈循环、执行安全检查并持续改进管道。阅读更多

另请阅读:我们在 DockerCon 2023 上学到的一切阅读更多

其他资源

- :Docker 的关方文本,您是可以在表中寻找到白皮书、步凑、参考选取姿料等。


- :Django 的手官文档文件,您不错在在当中找见主题词、操作的白皮书、考虑档案资料等。
바카라사이트 바카라사이트 온라인바카라