DcokerでPython、Django環境の構築
docker-composeファイルのテンプレート
version: '3'
services:
web:
build: .
volumes:
- .:/code
tty: true
ports:
- 8000:8000
networks:
- external.group
networks:
external.group:
external: trueDockerfileのテンプレート
# 公式からpython3.10 linuxイメージをpull
FROM python:3.10
# Pythonがpyc filesとdiscへ書き込むことを防ぐ
ENV PYTHONDONTWRITEBYTECODE 1
# Pythonが標準入出力をバッファリングすることを防ぐ
ENV PYTHONUNBUFFERED 1
# aptをアップデート
RUN apt update
# ディレクトリを作成
RUN mkdir /code
# 作業ディレクトリを設定
WORKDIR /code
# requirements.txt を /code ディレクトリに追加
ADD requirements.txt /code/
# pipをアップデート
RUN pip install --upgrade pip
# requirements.txt からライブラリをinstall
RUN pip install -r requirements.txt
# モジュールをワークスペースに追加
ADD . /code/このファイルは、 docker-compose.yml と同階層に設置する。
requirements.txtファイルのテンプレート
Django==4.1
mysqlclient==2.1.1Dockerfileから読み込まれるので、Dockerfileで指定している位置に配置する。
今回のテンプレートの場合は同階層。
起動コマンド
Dockerは下記のコマンドを使用して起動する。
docker-compose up -d --build
初期時は、環境的に何もないため、オプションとして --build を指定している。
プロジェクトの作成
下記のコマンドを実行してDjango上にプロジェクトを作成する。
docker container exec -it [コンテナ名] django-admin startproject [プロジェクト名]
データベースの接続情報変更
作成したプロジェクトの settings.py の DATABASES 部分にデータベースへの情報を入力する。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[データベース名]',
'USER': '[テータベース接続ユーザー]',
'PASSWORD' : '[テータベース接続パスワード]',
'HOST': '[ホスト]',
'PORT': 3306,
}
}プロジェクトを起動
下記のコマンドを実行し、プロジェクトを起動する。
docker container exec -it [コンテナ名] python [プロジェクト名]/manage.py runserver 0.0.0.0:8000


