Open ftnext opened 4 years ago
https://ep2020.europython.eu/talks/CeKGczx-best-practices-for-production-ready-docker-packaging/
Dockerで環境を持ち運ぶためのベストプラクティス Iterative approach を共有
Itamar Turner-Trauring (PythonSpeed)
2020/07/23
重要なものが先にくる
[3段落くらいでまとめる]
[以下はオプション]
以下は初めて聞いた
一通り手を動かしたい https://pythonspeed.com/europython2020/ にて有料資料あり
Don't run as a root
RUN useradd --create-home appuser USER appuser WORKDIR /home/appuser COPY . . RUN pip install --user .
hand-buildしない シェルスクリプトを作る(buildしてpush)
set -euo pipefail →https://qiita.com/d_shimizu/items/c01f29f8398cc7f5c396
branchに応じたタグを付けられる GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD) https://qiita.com/karupanerura/items/721962bb7da3e34187e1
週に1度はキャッシュを使わない --pull --no-cache
CIでエラーに多く遭遇するようになるので、区別できデバッグしやすくする
ENV PYTHONFAULLTHANDLER=1 Cのコードのエラーが握りつぶされない https://docs.python.org/ja/3/using/cmdline.html#envvar-PYTHONFAULTHANDLER
早くスタート→pycを作っておく
python -m compileall yourpackage/ https://docs.python.org/ja/3/library/compileall.html
時間が経つにつれて、依存関係が変わってしまう
python:3.8-slim-buster(Debianのstable)
requirementsもlockする
alpineを使わない 小さいがPyPIにあるwheelを使えない→遅くなる
依存関係のインストールをコードと分ける 依存関係のlayerができる(変更されにくい)
pip install --no-cache-dir https://pip.pypa.io/en/stable/reference/pip_install/#caching
pip install --no-cache-dir
6について CIが構築されていれば、テストが落ちた段階でバージョン固定の必要性に気づけるので、 固定しない(ガンガン最新のバージョンに上げる)という考え方もあるのではないかと思った
https://ep2020.europython.eu/talks/CeKGczx-best-practices-for-production-ready-docker-packaging/
一言でいうと
Dockerで環境を持ち運ぶためのベストプラクティス Iterative approach を共有
発表資料リンク
発表者/所属
Itamar Turner-Trauring (PythonSpeed)
発表日付
2020/07/23
概要
Iterative approach
重要なものが先にくる
[3段落くらいでまとめる]
[以下はオプション]
新規性・差分
以下は初めて聞いた
トークで知って試したいこと
一通り手を動かしたい https://pythonspeed.com/europython2020/ にて有料資料あり
2. セキュリティ
Don't run as a root
3.CI
hand-buildしない シェルスクリプトを作る(buildしてpush)
set -euo pipefail →https://qiita.com/d_shimizu/items/c01f29f8398cc7f5c396
branchに応じたタグを付けられる GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD) https://qiita.com/karupanerura/items/721962bb7da3e34187e1
週に1度はキャッシュを使わない --pull --no-cache
4.デバッグしやすく
CIでエラーに多く遭遇するようになるので、区別できデバッグしやすくする
ENV PYTHONFAULLTHANDLER=1 Cのコードのエラーが握りつぶされない https://docs.python.org/ja/3/using/cmdline.html#envvar-PYTHONFAULTHANDLER
5.operational correctness
早くスタート→pycを作っておく
python -m compileall yourpackage/ https://docs.python.org/ja/3/library/compileall.html
6.Reproducible
時間が経つにつれて、依存関係が変わってしまう
python:3.8-slim-buster(Debianのstable)
requirementsもlockする
7. faster
alpineを使わない 小さいがPyPIにあるwheelを使えない→遅くなる
依存関係のインストールをコードと分ける 依存関係のlayerができる(変更されにくい)
8. smaller
pip install --no-cache-dir
https://pip.pypa.io/en/stable/reference/pip_install/#caching感想
6について CIが構築されていれば、テストが落ちた段階でバージョン固定の必要性に気づけるので、 固定しない(ガンガン最新のバージョンに上げる)という考え方もあるのではないかと思った