やる気がストロングZERO

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

Nginx -> uWSGI -> Djangoで動作するDocker Imageを作った

Nginx -> uWSGI -> Djangoで動作するDocker Imageを作った

github.com

↓ここでいう、webサーバーに当たる部分が出来た感じ。 (引き続きDB環境も含めるようにしていく予定。)

Django webアプリのDockerを使った本番環境、開発環境の構成を考える - やる気がストロングZERO

これを使えば、開発で使う環境がそのまま本番環境でも動く、という算段。

想定している開発手順

Djangoのprojectコードを編集したらコミット。(開発中はDjangoの開発サーバーを使って動作確認する。)
本番デプロイ前に、docker imageをビルドして、コンテナ実行して動作確認する。
問題なければ、本番サーバー内でgit pullしてコードを取得しimageをビルドし、コンテナを入れ替えてデプロイ(コンテナの入れ替え方法はまだ未調査。k8sでできるっぽい)

悩んだ部分とか

sshでサーバー内部で直接いろいろ設定するノリではうまくいかない部分があった。

RUN で指定したコマンドは、bashではなくてshで実行されるので思わぬエラーがでた。(shは使い慣れていないので、、) 実行shellをbashにするよう設定した。

RUN実行ごとに環境が独立(?)しているので、前のRUN実行時の結果を前提にして次のRUNを実行してもエラーになる。例えばvenvで仮想環境に入るコマンドを売っても次のRUNではなかったことになっているとか。

コンテナは実行時のコマンドが終了した時点で停止してしまうので、nginxの実行はデーモン化させずにforgroundで動かす必要がある。