仕事でPythonコンテナをデプロイする人向けのDockerfile
Pythonで書かれたアプリケーションをDockerイメージにする堅い方法の紹介です。イメージサイズを少しでも削ろう!とかではなくて実用性重視の方向です。
Pythonユーザーは基本的にAlpineを選んではいけません。いろいろネガが大きいからです。
Pythonのマルチステージビルド
pip install -r requirements.txtで依存ライブラリと一緒にインストールした後にpip freeze > requirements.lockで作成します。
requirements.txtにはバージョン指定なし
Pythonでどうやってマルチステージビルドを実現するのか
ポイントとしては、pip installしてできたライブラリを一式コピーして実行用のコンテナに写してます。
COPY --from=builder /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages
今のところsite-packages全部コピーの方法で問題はなさそうです。
手を動かしたところ、CLIコマンドの場合は/usr/local/bin/の下もコピーする必要あり
slimで発生