DVAデプロイ

開発チームはAWS CodeBuildを使用して、Dockerイメージをビルドし、Amazon ECRへプッシュするCI/CDパイプラインを構築しています。Dockerイメージのビルドコマンド (`docker build`) と、ECRへのプッシュコマンド (`docker push`) は、`buildspec.yml` のどのフェーズ(phases)に記述するのがベストプラクティスとして最も適切ですか。

A
docker build を build フェーズに記述し、docker push は post_build フェーズに記述する。
✓ 正解
本体のビルド処理を build フェーズに配置し、ビルド成功後の成果物アップロードやプッシュ処理を post_build フェーズに配置するのがCodeBuildの標準的なベストプラクティスです。
B
両方のコマンドをまとめて pre_build フェーズに記述する。
pre_build フェーズは、ソースコードのダウンロード後の依存関係解決や、ECRへのログイン(aws ecr get-login-password)など、ビルド前の準備を記述するためのフェーズです。
C
docker build を install フェーズに記述し、docker push は build フェーズに記述する。
install フェーズは、ビルド環境に必要なランタイムやパッケージのインストールに使用されるため、アプリケーションのコンテナビルドを記述する場所としては不適切です。
D
両方のコマンドをまとめて post_build フェーズに記述する。
post_build はビルド完了後の後処理を記述する場所であり、肝心のイメージビルド自体をこのフェーズで行うべきではありません。

解説

AWS CodeBuildの `buildspec.yml` ファイルでは、ビルドプロセスを複数のフェーズ(`install`, `pre_build`, `build`, `post_build`)に分けて定義できます。ベストプラクティスとして、実際のコンパイルやビルド処理(`docker build`など)は `build` フェーズで行い、そのビルドが正常に完了した後に実行すべき成果物のプッシュや外部レジストリへの送信処理(`docker push`など)は `post_build` フェーズに記述します。これにより、ビルド失敗時にはプッシュ処理がスキップされ、パイプラインの保守性と明確性が向上します。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る