Docker で Python (Django) の開発環境を作ってみようと思ったが
便利なのかどうか判断しかねている。 ... 普通にIDE使って Docker 以前の開発環境作っちゃった方が便利なんじゃないの? あくまでガシガシ変更を入れる作業段階で、本番環境にデプロイするとかのフェーズとはまた別の話として。
- Docker でまず基本的なベースをビルドするためのイメージを作る。
- Pythonとか、必要なパッケージとか、場合によってはdjangoのプロジェクトを作るところまでやる。
- アプリケーションのソースフォルダはホストのディレクトリをマウントして、ローカルのエディタなりIDEなりで編集可能にする。
- DBとか関連サービスは当然それぞれDockerイメージを作る。
- Djangoの入ったコンテナでは最終的にサーバプロセスの起動を実行することになると思うが
- ソースの大掛かりな更新とか DB のMigrateが必要な際、どういった手順を踏むのか?
- なんらかのメンテナンスで最初からMigrateが必要な場合、コンテナの
ビルドかエントリポイントで実行するとか?- さらにMigrateを追加したい場合でもコンテナを再起動することにすれば、DBのデータは当然ホストにバインドされてるものとして、DBのデータ(テストデータとか)を失うことはない?
- そもそもHTTPサーバも別コンテナだろうと思うけど、Liveリロード的なことは可能?
あんまり docker 系のコマンドは叩かなくていいようにしたい。
個人的には最近Linuxサーバにログインしてvimでpython書いてるみたいなケースが多い(ほとんど使い捨てのスクリプトを作業の効率化に書く程度だけど)んであまり今時のがっつりやる python の開発はよくわからない。 django + docker みたいな記事は世の中いっぱい書かれてんだけどそれでうまく回ってますということなのか、とりあえず構築できましたという話なのかわからないものが多い・・・。
追記 8/27
- 結局起動時に色々判断して処理を実行するスクリプトを書いたりした。
- こういうのをプロジェクトやるごとに毎度やらないといけないようだと辛そうだなあ
- djangoでプロジェクト生成後、DBの接続先を変更する必要があるが、今の所手動。なので初回起動は失敗する。失敗すると再起動を繰り返すので、その間に接続先情報を(ホスト側から)修正すれば自動的にマイグレーションして起動する。環境変数を使えば初回だけは手動でワタワタする必要があるが、以降はそんなでもないかもしれない。
- コンテナ内で環境を作ったとしてもIDEもコンテナと同じ環境を要求するから、コンテナ内では意味がないにしてもvenvを作ってモジュールを入れたほうがいいのかもしれない。venvがホスト側に露出してれば参照できる(のではないか)