【Python】使用Docker、Django、Postgresql进行Web应用开发,并在Render.com上进行发布(第1期)

首先

前提 (native Chinese version, no need for paraphrasing)

我是一个没有经验的工程师。
我计划尝试使用Django进行Web应用程序开发,并将整个过程写成文章。
第一篇是介绍和环境搭建关于正在创建的应用程序。

目标

这次要制作的是一个微型公告板应用程序。
通过输入房间名和密码来创建房间。
进入房间后,将显示日程列表,并能够完整使用CRUD功能。

ScreenShot 2023-05-23 20.23.45.JPG

我們將使用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,你将看到火箭发射。

ScreenShot 2023-04-28 0.36.08.JPG

第一部结束了。

我们将在下一次中创建主要的论坛功能。
【Python】使用Docker、Django和Postgresql开发Web应用,并在Render.com上进行发布(第二部分)

文献引用

    • 【Qiita】今日からできる!見やすい記事の書き方

 

    • Qiitaで良い記事を書く技術

 

    • Markdown記法 チートシート

 

    Docker×Django×PostgreSQLの環境構築(備忘録)
广告
将在 10 秒后关闭
bannerAds