背景
ISUCON8に参加したときのメモです。
提供されたFlaskアプリをDocker化してローカル環境でデバッグしながら動かしていました。
使うもの
- 何かしらのFlaskアプリ
- wsgiサーバー(今回はgunicornですが、uwsgiなどでも応用できるはず)
- Docker compose
1. docker-compose
環境変数の設定をdocker-composeに寄せています。DEBUGは真値っぽいものなら何でもいいです。
gunicornに渡す引数もこちらで指定しています。gunicornに--workers引数を渡してしまうとフォークモードになりデバッグができなくなるのでご注意を。
2. FlaskのDockerfile
https://gist.github.com/nerixim/00839bba3037b2a611b11179038c633f
Gunicornの設定はdocker-composeで済ませているのでこちらで指定必須のモジュール名だけをしてしています。
関係ないですが、apk add mariadb-dev build-baseでpythonのMySQLdbに必要なパッケージをインストールしています。
3. Flaskの設定
WerkzeugのDebuggedApplicationを挿入するのですが、PROPAGATE_EXCEPTIONSを指定しないとgunicornとうまく連携できないのでご注意を。
4. nginxの設定(一応)
終わりに
以上のファイルをうまく(?!)配置できればポート80からnginx -> gunicorn -> flaskにアクセスができデバッグもできるのでFlaskで環境構築を始めてやる人には少し参考になれば嬉しいです。