環境

問題

解決策

multithreading - Python in docker – RuntimeError: can’t start new thread - Stack Overflow

Dockerを20.10.24以上にアップデートすることで解消するとのコメントがある。

または、pipはprogress barを表示するのにスレッドを使っているため、表示をオフにすることで解消する。

RUN pip install --progress-bar off
 
# あるいはグローバル設定でOFF
RUN pip config --user set global.progress_bar off

sam build --use-container が失敗する

SAM を使ってLambdaにデプロイするときに、 sam build --use-container としていたのだが、このときにprogressbarをOFFにする方法がわからなかった。 Dockerのバージョンも上げにくい環境だった。

そこで以下のようにして、依存関係のダウンロードのみローカルで実行してからビルドすることにした。(pythonのインストールが必要になってしまうのでuse-containerの恩恵が減る)

# あらかじめ依存関係をダウンロードしておいてrequirements.txtは削除することで、sam buildの処理中にはダウンロードされない
cat requirements.txt | cut -d ';' -f 1 | sed -e 's/ \+$//' > tmp && mv tmp requirements.txt
pip3 install -r requirements.txt -t .
rm requirements.txt

sam build --config-env dev
sam deploy --config-env dev