🖥️

Djnago プロジェクトを立ち上げる

2024/03/24に公開

開発環境の設定(docker)

まずは、docker環境で実行するため、必要な設定をしていきます。

backend/Dockerfile
# ベースイメージ
FROM python:3.12

# 環境変数設定
ENV PYTHONUNBUFFERED 1

# ワーキングディレクトリ設定
WORKDIR /backend

# Poetry をインストール
RUN pip install poetry

# pyproject.toml と poetry.lock をワーキングディレクトリにコピー
COPY pyproject.toml* poetry.lock* /backend/

# 依存関係をインストール
# poetryでライブラリをインストール (pyproject.tomlが既にある場合)
RUN poetry config virtualenvs.in-project false
RUN if [ -f pyproject.toml ]; then poetry install; fi

# poetryの実行用コマンド
ENTRYPOINT ["poetry", "run"]

# カレントディレクトリの全てのファイルをワーキングディレクトリにコピー
COPY . /backend/
compose.yml
services:
  backend:
    container_name: backend
    build:
      context: ./backend
      dockerfile: Dockerfile
    volumes:
      - ./backend/.dockervenv/:/backend/.venv/
      - ./backend/:/backend/
      - static:/backend/static_root
      - media:/backend/media
    environment:
      TZ: Asia/Tokyo
    ports:
      - 8000:8000
    depends_on:
      - db
  
  db:
    container_name: backend_db
    image: postgres:latest
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      TZ: Asia/Tokyo
      PGTZ: Asia/Tokyo

volumes:
  static:
  media:
  pgdata:

記載したら、

bash
docker compose build

を実行します。

dockerでpoetryを実行>必要なライブラリなどをインストール

必要なライブラリ関係をpoetryを利用してインストールします。
今回インストールするのは、以下のライブラリです。
【インストールするライブラリ】
--dependency django --dependency django-ninja --dependency psycopg2 --dependency psycopg2-binary --dependency pydantic --dependency django-cors-headers --dependency uuid --dependency python-jose --dependency python-dotenv

以下のコマンドを実行します。

bash
docker compose run --entrypoint "poetry init --name [コンテナ名] [インストールするライブラリ]" [コンテナ名]

最終的に実行したコマンドは以下のとおりです。

bash
docker compose run --entrypoint "poetry init --name 
backend --dependency django --dependency django-ninja --dependency psycopg2 --dependency psycopg2-binary --dependency pydantic --dependency django-cors-headers --dependency uuid --dependency python-jose --dependency python-dotenv" backend

実行すると、pyproject.tomlが生成され、必要な依存関係がメモされており、これに基づいてライブラリなどをインストールします。
そして、以下のコマンドを実行します。

bash
docker compose run --entrypoint "poetry install" backend

以下を実行

bash
docker-compose build --no-cache

プロジェクトの作成

Djnagoのプロジェクトを作成します。

bash
docker compose run backend django-admin startproject project .

compose.ymlに以下を追記します。
これで、コンテナを立ち上げた時に、サーバーも起動するようになります。

compose.yml
    command: >
      bash -c "python manage.py migrate
      && python manage.py runserver 0.0.0.0:8000"

最後に以下のコマンドを実行して、Djangoのトップの画面が表示されれば成功です。

bash
docker compose up

django初期画面

Discussion