Docker上でDjangoプロジェクトを実行するときの作法

Docker上で、Djangoプロジェクトを実行する際、 docker-compose.yaml にコマンドを記載する方法もあるが、その方法だと、不都合が生じる場合がある。

その不都合とは、awsなどの実稼働環境に載せた場合に、コンテナ定義がdocker-composeではなくなってしまうため、コンテナの起動と同時にDjangoプロジェクトが起動しない。

そのため、シェルプログラムなどに実行時のコマンドを逃がしてやる方が良い。

dockerfileへの追記

実行するシェルを呼び出してあげるように、下記記述を末尾に追加する。

# 実行
CMD [ "sh", "start.sh" ]

※CMDは1回しか使用できないため注意

シェルの中身

シェルの中には、起動のコマンドを記述する。

#!/bin/bash

# データベースのマイグレーション
python3 [アプリケーション]/manage.py makemigrations
python3 [アプリケーション]/manage.py migrate

# アプリケーションの起動
python3 [アプリケーション]/manage.py runserver 0.0.0.0:8000