Django + PostgreSQL + NginxでDockerコンテナを起動するテンプレートリポジトリです。
このリポジトリには2種類のdocker-compose.yamlファイルが含まれています。
Warning
以下のコードを実行するには、各種ライブラリがインストールされた環境が必要です。
仮想環境を利用する場合はアクティベートしてから実行してください。
pip install -r requirements.txt-
docker/app/とdocker/db/の中に.envファイルをそれぞれ新しく作成します-
ファイルの例は
.env.exampleです。この中に書かれている環境変数は必ず指定する必要があります。 -
まずは、
.env.exampleの中身を.envにそのままコピーすることをお勧めします。 -
DJANGO_SECRET_KEYは下記の手順に沿って生成してください。-
シェルで以下のコードを実行する
python manage.py shell
-
起動したPythonシェル内で以下のように実行する
from django.core.management.utils import get_random_secret_key
get_random_secret_key()'v#wt+ag1)vuubl!9t5ca@lks402vr3#-aab*=$i3d7r+xzv&j5'のように出力されます。(Pythonシェルを終了するには、
exit()と入力します) -
.envの中の[DjangoSecretKey]を先ほどの文字列に置き換える.envファイル内のシークレットキーはこのようになります。DJANGO_SECRET_KEY=django-insecure-v#wt+ag1)vuubl!9t5ca@lks402vr3#-aab*=$i3d7r+xzv&j5
-
-
データベースの接続設定は下記のように対応しています。
(左側が
docker/app/.env、右側がdocker/db/.envに対応 /DB_HOSTにはDBコンテナのネットワークエイリアスdbを使用)DB_NAME=POSTGRES_DBDB_USER=POSTGRES_USERDB_PASS=POSTGRES_PASSWORD
-
-
起動方法は起動環境によって異なります
開発環境ではAppコンテナとDBコンテナのみ起動します。
Appコンテナのサーバー起動にはDjangoのRunserverが使用されています。
Warning
ここから先の操作はDocker Engineが起動している必要があります。
-
イメージをビルドする
下記、コマンドを実行して開発環境イメージをビルドします。
docker-compose -f docker-compose-develop.yaml build
-
コンテナを起動する
下記、コマンドを実行してコンテナを起動します。
docker-compose -f docker-compose-develop.yaml up -d
Note
ローカルで起動した場合、 http://localhost:8000 で接続できます。
本番環境ではWebコンテナとAppコンテナ、DBコンテナが起動します。
Appコンテナの起動方法にはGunicornが使われており、WebコンテナとAppコンテナはソケット通信で接続されています。
Tip
DBサーバーにRDSなどを使用して別途起動する場合にはDBコンテナを削除し、docker/app/.envのDB_HOSTにDBサーバーのDNSを指定する必要があります。
Warning
ここから先の操作はDocker Engineが起動している必要があります。
-
イメージをビルドする
下記、コマンドを実行して開発環境イメージをビルドします。
docker-compose -f docker-compose-production.yaml build
-
コンテナを起動する
下記、コマンドを実行してコンテナを起動します。
docker-compose -f docker-compose-production.yaml up -d
Note
ローカルで起動した場合、 http://localhost:80 で接続できます。
-
このリポジトリのライセンスはMIT Licenseです。
必要がなければ、
LICENSEファイルを削除してください。 -
開発環境でAppコンテナのシェル操作をする場合、各コマンドの前に
docker container exec django-appをつけて実行する必要があります。
このテンプレートリポジトリはSoma Andoによって制作されました。