背景
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で環境構築を始めてやる人には少し参考になれば嬉しいです。