Flask & uWSGI Server

PythonのWebアプリケーションサーバFlaskをWSGI経由接続(nginxあり・なし)、ダイレクト接続をdocker環境で試して見ました。

環境)Docker Desktop / Mac(arm64)
参考)https://qiita.com/hiren/items/4ed438303659125490b5

PythonプログラムとWSGIがあるAppと、NginxとWSGIに接続するための設定があるWebの二つのコンテナを作成します。

app/Dockerfile

app/uwsgi.ini(nginxから接続されるソケットを設定)

app/hello.py(pythonコマンドで実行するときport:5000でリッスン)

web/Dockerfile

※envsubstコマンドにより、env_listの環境変数をconfに設定

web/uwsgi.conf.template

web/env_list

※Dockerのリゾルバについては下記参考
https://stackoverflow.com/questions/35744650/docker-network-nginx-resolver

Appコンテナの作成と起動(172.17.0.2)

Webコンテナの作成と起動(172.17.0.3)

Webコンテナに入りコマンド実行

# curl http://172.17.0.3/hello
{“message”:”Hello World!”}

docker-composeでビルドしたケースについても確認(イメージは上記で作成済みのものを利用。確認内容は同じ)

docker-compose.yaml

web/env_list(IPアドレスは変更)

同様にcurlでHello Worldを確認。

# curl http://172.26.0.3/hello
{“message”:”Hello World!”}

Nginxなしで、WSGIあり、なし(Flaskにダイレクト)の接続確認

app/uwsgi.ini

URLの部分に使われているデコレータについても試してみました。

実行結果

参考)https://qiita.com/mtb_beta/items/d257519b018b8cd0cc2e

以上、メモでした。