見出し画像

DockerでDjango4の利用01:構築


1.環境について

1.1.windows11

Docker Desktop v.4.25.0
WSL2

1.2.Dockerにおいて構築すべき環境

Python 3.12
Django 4.2.X
MySQL 8.0.28
mysqlclient 2.X
nginx  1.25.3

1.3.Dockerファイルなど

2.環境構築

2.1.docker-composeでDocker imageを作成

プロジェクトを新規作成する際はプロジェクト名と作成するディレクトリを指定して以下のコマンドを実行します
今回はdjangopjのプロジェクトをカレントディレクトリに作成します
terminalで実行します

docker-compose -f docker-compose.prod.yml run app django-admin startproject dproj .

※prodがついているものを利用してください

※エラーが出たら
ログを確認し、継続可能ならば次のコマンドを実行する

docker compose -f "docker-compose.prod.yml" up -d --build

Django画面が表示される

2.2.settings.pyのDATABASESを変更

from pathlib import Path
# osのモジュールをインポート
import os

# [・・・]

# SECRET_KEYを.envから取得
SECRET_KEY = os.environ.get("SECRET_KEY")

# DEBUGを.envから取得
# envファイルにTrue、Falseと書くとDjangoがString型と認識してしまいます
# os.environ.get("DEBUG") == "True"を満たすとboolean型のTrueになり、
# env内のDEBUGがTrue以外ならFalseになります
DEBUG = os.environ.get("DEBUG") == "True"

# ALLOWED_HOSTSを.envから取得
ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS").split(" ")

# [・・・]

# MySQLのパラメータを.envから取得
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        # コンテナ内の環境変数をDATABASESのパラメータに反映
        "NAME": os.environ.get("MYSQL_DATABASE"),
        "USER": os.environ.get("MYSQL_USER"),
        "PASSWORD": os.environ.get("MYSQL_PASSWORD"),
        "HOST": "dproj01-db",
        "PORT": 3306,
        "OPTIONS": {
            "init_command": "SET sql_mode='STRICT_TRANS_TABLES'",
        },
    }
}


# [・・・]

# 言語を日本語に設定
LANGUAGE_CODE = "ja"
# タイムゾーンをAsia/Tokyoに設定
TIME_ZONE = "Asia/Tokyo"

# [・・・]

# STATIC_ROOTを設定
# Djangoの管理者画面にHTML、CSS、Javascriptが適用されます
STATIC_ROOT = "/static/"
STATIC_URL = "/static/"

次のコマンドを実行する

docker compose -f "docker-compose.prod.yml" up -d --build
http://localhost:81/に接続

3.Django管理画面の確認

http://localhost:81/adminにアクセスし、以下の画面が出たら成功です

Django管理サイト画面
これが出れば構築は成功です


この記事が気に入ったらサポートをしてみませんか?