uWSGI で動かしているアプリケーションが、最新の Docker イメージでビルドしたときに UnicodeDecodeError: 'ascii' codec can't decode byte...
のエラーで動かなくなったのでメモ。
更新(2022/4/21)
該当 issue を見てみたら revert されていたので、今は今まで通り使えそう。
要約
以前は Python3 側にバグがあり、環境変数 LANG=C.UTF-8
を指定しないと動かなかったみたいだが、現在は修正されているため最新の Docker イメージではこれが削除された模様。
しかしながら、この環境変数をいくつかのライブラリは見ていたようで、上記 issue には今回の変更による悲鳴が寄せられている。
影響を受けるライブラリの1つが、私も使っている uWSGI で、日本語の文字(非 ascii 文字)を扱おうとすると UnicodeDecodeError
が出てしまった。
Dockerfile なり何なりで環境変数 LANG=C.UTF-8
を指定すれば動くので workaround としてはそれで良さそう。 Python 側のバグが直っている以上、再び公式イメージに ENV LANG C.UTF-8
が戻ってくることはなさそうなので、ライブラリ側での根本解決を待つ(もしくは貢献する)方針かな。