要启动一个新的 Django 项目,您需要使用django-admin
命令。此命令允许您为 Django 应用程序创建项目目录和一些基本文件。例如,如果您想创建一个名为my_project
的项目,您可以在终端中运行以下命令:
django-admin startproject my_project
├──
manage.py
文件是一个脚本,允许您为项目执行各种任务,例如运行开发服务器、创建数据库迁移和测试代码。 project/
目录包含项目的设置和配置文件。
settings.py
文件定义项目的主要设置,例如数据库连接、安装的应用程序和中间件。 urls.py
文件将项目的 URL 映射到应用程序的视图。
python manage.py runserver
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 应用程序提供特定的功能或特性。您可以创建自己的应用程序或使用第三方来源的现有应用程序。
python manage.py runserver
python manage.py test
Ran 1 test in 0.001s Ok
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"]
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 文件定义了两个服务: web
和db
。 web
服务将从我们在上一节中创建的 Dockerfile 构建 Docker 映像。 web
服务还将在主机上公开端口8000,以便我们可以访问Django开发服务器。
db
服务将使用官方 PostgreSQL Docker 镜像。 db
服务还将主机上的postgres
目录挂载到容器内的/var/lib/postgresql/data
目录。这将确保数据库文件在容器重新启动之间保留。
docker-compose up -d
您还可以通过//localhost:8000/admin/
登录 Django 管理页面。用户名和密码默认为admin
和admin
。
- 转到您的个人资料页面,然后单击“存贮库”旁边的“新砌的”按钮。
- 为您的存储库命名,例如django-docker-app
,并可选择添加描述。
- 单击搭建保存库按钮。
- 转到终端中的 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
。
- 转到并单击“注册帐号”按钮。
- 填表必填信息,举例人名、电商电邮、帐号密码等。 - 使用主要的激发语言学,这类 Python。- 单击“创立了勉费的账号”按钮。
- 全面检查让企业的电子元器件信息并单击环节以认证让企业的企业账户。
- 打开终端,然后输入heroku --version
以验证安装是否成功。你应该看到这样的东西:
heroku/7.59.0 win32-x64 node-v12.21.0
- 转到终端中的 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
- 输入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_URL和SECRET_KEY ,您可以在 Django 项目设置中使用它们。
如何使用“ 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.
- 输入heroku container:release web -a django-docker-app
将 Docker 镜像发布到 Heroku 应用程序。你应该看到这样的东西:
Releasing images web to django-docker-app... done
- 输入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 open -a django-docker-app
在 Web 浏览器中打开我们部署的 Web 应用程序。您应该看到我们的 Django 项目在 Heroku 上运行。
您已使用heroku
命令成功将 Django 项目部署到 Heroku。您现在可以享受您的 Web 应用程序并与其他人共享。
继续阅读:CI/CD 对于快速可靠的软件交付至关重要。要优化 CI/CD 管道以实现最大效率,请选择正确的工具、简化工作流程、使用自动化测试和 QA、并行化构建、使用监控和反馈循环、执行安全检查并持续改进管道。阅读更多
另请阅读:我们在 DockerCon 2023 上学到的一切阅读更多