仕事でPythonコンテナをデプロイする人向けのDockerfile
#Dockerfile
https://future-architect.github.io/articles/20200513/
Pythonで書かれたアプリケーションをDockerイメージにする堅い方法の紹介です。イメージサイズを少しでも削ろう!とかではなくて実用性重視の方向です。
Pythonユーザーは基本的にAlpineを選んではいけません。いろいろネガが大きいからです。
『エキスパートPythonプログラミング 改訂3版』2.5 システムレベルでの環境の分離(2.5.2)でも
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/の下もコピーする必要あり
apt installするライブラリは https://packages.debian.org/search?lang=ja&arch=amd64&mode=filename&searchon=contents&keywords=libxml2.so.2 を検索!
slimで発生
https://future-architect.github.io/articles/20200514/
#distroless について