本番イメージのベストプラクティス
マルチステージビルドとroot以外のユーザーを使います
「本番イメージのベストプラクティス」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。
より小さく、安全なイメージ
本番用イメージは小さく、安全であるべきです。無駄のないイメージは、より速く配布・起動でき、攻撃者に狙われる対象も少なくなります。🛡️
マルチステージビルドを使う
multi-stageビルドでは、あるステージで依存関係をコンパイルし、結果だけをクリーンな最終イメージにコピーします。
FROM python:3.12 AS builder
FROM python:3.12-slim AS final必要なものだけをコピーする
ビルダーステージからCOPY --fromを使ってインストール済みパッケージだけをコピーし、コンパイラやビルド時の不要なファイルは残しません。
COPY --from=builder /usr/local/lib/python3.12 /usr/local/lib/python3.12rootで実行しない
root権限を持たないUSERを作成すると、プロセスが侵害されても、コンテナやホストを自由に変更されるのを防げます。
RUN adduser --disabled-password appuser
USER appuserバージョンを固定する
requirements.txtでバージョンを正確に固定すると、ビルドを再現可能にでき、予期しない更新による破損も防げます。
Django==5.0.6
gunicorn==22.0.0シークレットをイメージに含めない
シークレットは実行時にenvironment変数で渡し、キーやパスワードをイメージ自体に埋め込まないでください。
SECRET_KEY=${SECRET_KEY}ヘルスチェックを追加する
HEALTHCHECKを設定すると、コンテナが実際に稼働し、リクエストを処理できているかをオーケストレーターに知らせられます。
HEALTHCHECK CMD curl -f http://localhost:8000/health || exit 1DEBUGをFalseに設定する
本番環境では必ずDEBUG=Falseで実行し、エラーページからコード、設定、スタックトレースがユーザーに漏れないようにします。
DEBUG = Falseリリースにタグを付ける
イメージにはlatestだけでなく、実際のバージョンをタグ付けします。そうすれば、何がデプロイされているかを正確に把握でき、ロールバックも可能になります。
docker build -t myapp:1.4.0 .脆弱性をスキャンする
ビルドしたイメージに対してscanを実行し、ベースイメージや依存関係に含まれる既知の脆弱性を早期に検出します。
docker scout cves myapp:1.4.0キャッシュを活用するレイヤー順序
変更の少ない手順を先に、コードを最後に配置します。そうすると、ほとんどの再ビルドでキャッシュ済みのlayersを再利用でき、処理を高速に完了できます。
クイックチェック
本番用の最終イメージを最も直接的に小さくできるプラクティスはどれですか?
まとめ
multi-stageビルド、root権限を持たないユーザー、固定したバージョン、実行時のシークレット、ヘルスチェック、DEBUGの無効化によって、イメージのセキュリティを強化しました。これで本番環境に対応できます!🏁
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「本番イメージのベストプラクティス」レッスンは無料ですか?
はい。「本番イメージのベストプラクティス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。
「本番イメージのベストプラクティス」で何を学びますか?
マルチステージビルドとroot以外のユーザーを使います ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Django Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「本番イメージのベストプラクティス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDjango Academyレッスンでコードを書いて実行できますか?
はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Django Dockerfileの作成
- PostgresとRedisを使うdocker-compose
- Entrypoints、Migrations、collectstatic
- 本番イメージのベストプラクティス