Closed4

docker × Django 環境構築

KeiKei

1. DockerfileとDjangoプロジェクト作成

django_tutorial_with_dockerという名前でルートディレクトリを作成

mkdir django_tutorial_with_docker && cd django_tutorial_with_docker

Docker環境に必要なファイルをプロジェクト内に作成する(いったん下記2ファイルのみ)

  • Dockerfile
  • requirements.txt
Dockerfile
# ベースイメージの設定
FROM python:3.12

# Pythonの標準出力のバッファリングを解除して、出力を即座に表示できるよう設定
ENV PYTHONUNBUFFERED=1

# 作業ディレクトリの設定
WORKDIR /code

# pipの最新バージョンにアップグレード
RUN pip install --upgrade pip

# 依存関係のインストール
COPY requirements.txt /code/
RUN pip install --no-cache-dir -r requirements.txt

# ソースコードをコンテナ内にコピー
COPY . /code/
requrements.txt
Django==4.2.5
  • Dockerイメージのビルド
    • イメージにdjango-tutorialというタグを付ける
terminal
docker image build -t django-tutorial  .
  • コンテナ起動
    • 現在のディレクトリ$(pwd)をコンテナ内のディレクトリcodeにマウントさせる
    • コンテナ内で作成したdjangoプロジェクトをローカル側に反映させたい意図がある
terminal
docker run -it --name django-tutorial-container -v $(pwd):/code django-tutorial /bin/bash
  • コンテナ内でDjangoプロジェクト作成
    • codeディレクトリへ移動して、下記コマンド実行
    • 第1引数にプロジェクト名となるconfigを指定
    • 第2引数に.を渡すことで、現在のディレクトリ直下に雛形となるモジュール群を作成する
コンテナ内
cd code && django-admin startproject config .
  • ディレクトリ構造の確認
    • ローカルのdjango_tutorial_with_dockerの中身が下記のようになっていればOK
terminal
tree .
.
├── Dockerfile
├── config
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── requirements.txt

1 directory, 9 files
KeiKei

2. docker-composeでアプリ起動できるようにする

djangoプロジェクトは作成できたので、
docker compose upでコンテナ起動→Djnagoプロジェクトが自動で立ち上がる状態を作りたい。

まずは、docker-compose.ymlファイルを作成する

  • docker-compose.yml
    • command:Django開発サーバーを8000番ポートで起動するコマンドを指定する
    • volumes:ホストPC側のカレントディレクトリをコンテナ内の/codeにマウントする
    • ports :コンテナ内の8000番ポートをホストPCの8000番ポートにマッピングする
docker-compose.yml
version: '3'

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
  • docker-composeコマンドでコンテナ起動する
terminal
docker compose up
  • localhost:8000にアクセスして、Djangoサーバーが立ち上がればOK(下記イメージ)
このスクラップは2ヶ月前にクローズされました