0
0

Docker × Django 開発環境作成

Last updated at Posted at 2024-04-13

はじめに

自分用の個人開発のメモ/備忘録として記録していきます。

環境

docker desktop
windows 11

やりたいこと

Django開発環境をdocker上に作成したい。
最小限の構成とし、必要に応じて修正していく。

ディレクトリ

プロジェクトディレクトリを任意の場所に作成。
docker関連のファイルとその配下にsrcディレクトリを作ることにした。

project directory
│  .env
│  docker-compose.yml
│  Dockerfile
│  requirements.txt
└─ src

必要ファイルを準備

envファイルを作成

envファイルにてホスト側のディレクトリやポートを指定。
ポートは他コンテナと重複しないものを設定する。

.env
# Directory
HOST_WORKDIR=./src

# Python version
PYTHON_VER=3.12-slim-bullseye

# Port
APP_HOST_PORT=8888

# Mode
ENV_STATE=local   #'local' / 'staging' / 'production'

requirements.txtファイルを作成

とりあえずdjangoのみ。
必要に応じて追加する。

Django==5.0

docker-compose.ymlファイルを作成

コンテナ側のポートは8000番に指定。
commandとportsのポート番号を合わせれば他のポートでもOK。

docker-compose.yml
version: '3'

services:
  app:
    build:
      args:
        - WORKDIR=/var/www/src
        - PYTHON_VER={PYTHON_VER:-3.12-slim-bullseye}
      context: .
      dockerfile: Dockerfile
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - ${HOST_WORKDIR:-./src}:/var/www/src
    ports:
      - "${APP_HOST_PORT:-8000}:8000"
    environment:
      - ENV_STATE=${ENV_STATE:-local}

Dockerfileファイルを作成

Dockerfile
#ベースイメージ作成
ARG PYTHON_VER
FROM python:${PYTHON_VER}
ENV PYTHONUNBUFFERED 1

#ディレクトリ作成、ワーキングディレクトリ指定
ARG WORKDIR
RUN mkdir -p ${WORKDIR}
WORKDIR ${WORKDIR}

#requirements.txtからパッケージインストール
COPY requirements.txt "${WORKDIR}/"
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

プロジェクト/コンテナ作成

イメージ作成

docker compose build

プロジェクト作成

プロジェクトの共通設定を行うことが多いので名前をconfigとした。
src直下へ作成するため「.」としておく。

docker compose run app django-admin startproject config .

コンテナ作成

docker compose up -d

アクセスしてみる

ブラウザからhttp://localhost:8888へアクセスしてみる。
下記画面が出れば作成成功:congratulations:
image.png

settings.pyを修正

環境によるDEBUGやALLOWED_HOSTSを切り替える。

settings.py
 envstate = os.environ.get('ENV_STATE','local')
if envstate=='production':
    DEBUG = False
    ALLOWED_HOSTS = []
elif envstate=='staging':
    DEBUG = True
    ALLOWED_HOSTS = []
else:
    DEBUG = True
    ALLOWED_HOSTS = [
        'localhost',
        'www.localhost',
        'host.docker.internal',
        'gateway.docker.internal',
    ]

タイムゾーン等も変えておく。

settings.py
LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

スーパーユーザー作成

コンテナに入る

docker compose exec -it app sh

マイグレートする

python manage.py migrate

スーパーユーザー作成

python manage.py createsuperuser --email admin@example.com --username admin
パスワードを聞かれるので任意のものを設定する。

admin画面にアクセスしてみる

ブラウザからhttp://localhost:8888/adminへアクセスしてみる。
作成したスーパーユーザーでログインしてみる。
image.png

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0