Django webアプリのDockerを使った本番環境、開発環境の構成を考え中。
本番環境はawsのEC2インスタンス1つにDockerを使ってすべてをまかなうものとする。
(本当はDBはRDSを使うべきだと思うけど、Dockerの勉強を兼ねているので、、)
現状の案をまとめる。
本番環境
ec2インスタンスにDockerで以下のコンテナを動かす。
・webサーバーコンテナ
nginx、uWSGI、djangoを動かす。
ログファイル類はec2インスタンス上(コンテナ外)に設置する。
※追記 作成した。
Nginx -> uWSGI -> Djangoで動作するDocker Imageを作った - やる気がストロングZERO
↓この辺を見て設定を行う予定。
・dbサーバーコンテナ
postgresqlを動かす。
dbファイルはec2インスタンス上(コンテナ外)に設置する。
開発環境
ローカルマシンで開発を行う。
djangoの開発用サーバー(manage.py runserver)で実行確認を行う。
dbはdbサーバーコンテナを起動して使う。dbファイルはローカルマシン上のものを使うようにする。
デプロイ前にローカルマシン上で
$ docker-compose run
を実行し問題ないか確認する。
デプロイ
デプロイ方法は調査中。
たぶんコンテナごと入れ替える感じになるのかと思っている。
とりあえずは、ec2上で一旦コンテナを停止・削除して作り直すことにする。(本番環境とは。。)
※暫定的な方法。ダウンタイムが発生してしまう。正しい方法がわかったら修正する。 $ git pull //変更内容を取り込む $ docker-compose stop //コンテナ停止 $ docker-compose rm //コンテナ削除 $ docker-compose run //コンテナビルドと起動