GitHub – marochat/djangotmpl: django uwsgi + nginx docker template
django uwsgi + nginx docker template. Contribute to marochat/djangotmpl development by creating an account on GitHub.
github.com
# 通常起動
$docker-compose up -d
# 再構築
CLEARSITE=1 docker-compose up -d
テンプレート表示状態
WEBアプリの勉強を始めた所、djangoを用いて同じ構成のサイトを何度も構築するのが面倒でテンプレートを作ることにした。しかしコレばっかりに夢中で肝心の勉強の方がおろそかになってきているのは、いつものお約束。
テンプレート構成
- docker image 仕様(Dockerfile)
- debianベースのpythonスリムイメージをベースとする
- pythonライブラリインストールステージ:dbアクセス用ライブラリの為に一時的に開発ツール一式をインストール(後にスリム化処理)
- nodejsは一旦aptパッケージインストールした後、npmで最新のバージョンをインストール
- npmでtypescript、sass、bootstrapをインストール
- その他チョットしたツール:gitやwget、アプリ実行用ユーザー(user)の作成とsudo権限設定
- 実行コマンドは/code/startupシェルスクリプト:イメージにはダミーのシェルスクリプトを格納しているが、実際はサイト構築テンプレートとwusgi起動を含むシェルスクリプトを/code/startupとして作成しマウントして実行(後述)。
- 起動:docker-compose構成
- djangoは/codeをマウントしてサービスを実行
- 環境変数CLEARSITE=1とすることでサイトを削除してテンプレートで再構築する(危険コマンド)
- 構築用のstartupスクリプトが長いため、djangoサービスが始める前にnginxからのサービス要求がありロックすることがあったので、ヘルスチェックを行うようにしている(uwsgiのプロセスチェック)。
- startupスクリプト(テンプレート構築&サービス起動)
- 環境変数でサイト名アプリ名を定義し、サイト名のディレクトリが存在しない場合、またはCLEARSITEでアプリを削除している場合、テンプレートを用いてアプリケーション雛形を構築する。
- Django-admin startupprojectでサイトを構築、settings.pyの必要な部分を順次編集。
- python manage.py startappで最初のアプリケーションを作成(これを用いてシングルページアプリケーションの雛形とする)
- アプリケーションの設定部分をsettings.pyに追記編集。bootstrapなどのミドルウェアの設定、LOGGING設定、環境変数読み込み設定。
- ルート用urls.py、フロント側にデフォルト変数を送る機構context_processors.pyの雛形作成
- アプリケーション定義用urls.py、views.pyの雛形作成、indexページとajax待ち受けの最低限構成、およびテンプレートHTMLのindex.html、base.html雛形作成。
- python manage.py migrate :sqliteデータベースの初期化、管理者ユーザーの作成
- スタティック領域の構成
- bootstrapはnpmのグローバルエリアからローカルコピー(これは最新版に対応するため常に行う)
- サイト用カスタムscssのテンプレート作成(再構築時)
- sass常駐コンパイラの起動(上記scssファイルの更新と同時に自動コンパイル)
- bootstrap関連その他js、およびtinymce設定
- DOM構築用javascriptモジュールテンプレート(TSソース)設置、およびTypeScript初期化と設定ファイル初期編集(再構築時)
- tsc常駐コンパイラ起動
テンプレートに凝りすぎてほぼほぼ自由度が下がってしまっている件。前回のDOM構文もTypescriptに移植して使える状態にして用意してます。細かい解説は折りを見て追記します。