Django Academy · レッスン

本番イメージのベストプラクティス

マルチステージビルドとroot以外のユーザーを使います

レッスン 4/413 ステップ

「本番イメージのベストプラクティス」は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.12

rootで実行しない

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 1

DEBUGを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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Django Dockerfileの作成
  2. PostgresとRedisを使うdocker-compose
  3. Entrypoints、Migrations、collectstatic
  4. 本番イメージのベストプラクティス
← Django Academyに戻る