やる気がストロングZERO

やる気のストロングスタイル

Django webアプリのDockerを使った本番環境、開発環境の構成を考える

Django webアプリのDockerを使った本番環境、開発環境の構成を考え中。

本番環境はawsのEC2インスタンス1つにDockerを使ってすべてをまかなうものとする。
(本当はDBはRDSを使うべきだと思うけど、Dockerの勉強を兼ねているので、、)

現状の案をまとめる。

本番環境

ec2インスタンスにDockerで以下のコンテナを動かす。

・webサーバーコンテナ
nginx、uWSGI、djangoを動かす。
ログファイル類はec2インスタンス上(コンテナ外)に設置する。
※追記 作成した。
Nginx -> uWSGI -> Djangoで動作するDocker Imageを作った - やる気がストロングZERO

↓この辺を見て設定を行う予定。

qiita.com

qiita.com

・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 //コンテナビルドと起動