【Python】使用Docker、Django、Postgresql进行Web应用开发,并在Render.com上进行发布(第1期)
首先
前提 (native Chinese version, no need for paraphrasing)
我是一个没有经验的工程师。
我计划尝试使用Django进行Web应用程序开发,并将整个过程写成文章。
第一篇是介绍和环境搭建关于正在创建的应用程序。
目标
这次要制作的是一个微型公告板应用程序。
通过输入房间名和密码来创建房间。
进入房间后,将显示日程列表,并能够完整使用CRUD功能。
我們將使用Docker來建立一個包含Web容器和數據庫容器的應用程序,以此來進行開發。最後,我們將使用Render.com進行部署。
开发环境
-
- Macbook Air (M1, RAM:16GB)
-
- Docker
- Visual Studio Code
环境建设
在假设Mac已经安装了Docker和VSCode的前提下,
首先打开终端,并移动到您自己准备的开发文件夹中。
我们这次将在~/development/创建文件夹。
# developmentフォルダを作成
mkdir -p ~/development
# developmentフォルダに移動
cd ~/development
在development文件夹中创建一个文件夹来保存代码,并进入该文件夹。这次我们创建一个名为schedule-sharing-app的文件夹。
# django-board-projectフォルダを作成
mkdir django-board-project
# フォルダ内に移動
cd django-board-project
在 django-board-project 文件夹内创建 Dockerfile、docker-compose.yml、requirements.txt、.env 空文件。
然后,启动 VSCode。
# 空ファイルを作成
touch Dockerfile docker-compose.yml requirements.txt .env
# 現在のフォルダ内でVSCodeを起動
code .
我会使用 VSCode,在 Dockerfile、docker-compose.yml 和 requirements.txt 中逐步编写所需的信息。
首先只写开发所需的内容,等到部署时再进行修改。
参考网站:Docker x Django x PostgreSQL环境搭建(备忘录)
FROM python:3.9.16
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
version: '3'
services:
db:
image: postgres
container_name: db
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
build: .
container_name: web
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db
Django==4.2
psycopg2==2.9.6
python-dotenv==1.0.0
接下来,我们将使用Docker Compose来创建项目。
项目将在django-board-project文件夹内创建。
# 今いるディレクトリ(django-board-project)でconfigという名前のプロジェクトを作成
docker compose run --rm web django-admin startproject config .
然后,将创建一个名为config的文件夹,并在该文件夹中添加一个名为settings.py的文件,所以我们可以使用VSCode编辑settings.py和.env文件。
# import部分に追加
import os
from pathlib import Path
from dotenv import load_dotenv
# .envファイルを読み込む
load_dotenv()
省略
# SECRET_KEYを.envに移動し、.envから読み込む
SECRET_KEY = os.environ['SECRET_KEY']
省略
# 開発用に'*'とする。本番環境では絶対にしない
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
省略
# Postgresを使うので変更
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
(省略)
# 日本語に変更
LANGUAGE_CODE = 'ja'
# タイムゾーンを東京に変更
TIME_ZONE = 'Asia/Tokyo'
SECRET_KEY='もともとsettings.pyにあったSECRET_KEY'
最后,执行以下命令。
docker compose up -d --build
当你这样做后,Web容器和PostgreSQL容器会启动,然后在浏览器中访问localhost:8000,你将看到火箭发射。
第一部结束了。
我们将在下一次中创建主要的论坛功能。
【Python】使用Docker、Django和Postgresql开发Web应用,并在Render.com上进行发布(第二部分)
文献引用
-
- 【Qiita】今日からできる!見やすい記事の書き方
-
- Qiitaで良い記事を書く技術
-
- Markdown記法 チートシート
- Docker×Django×PostgreSQLの環境構築(備忘録)