CodeBuild に ECR でイメージをビルドして公開するように指示した方法が不思議ですか?
前のセクションで説明したように、CodeBuild プロジェクトに、Web アプリケーションのソースコードとともに提供される docker_buildspec.yaml という名前のファイルから指示を受け取るように指示しました。
組織によっては、ビルドスペックの修正をデベロッパーに制限する場合があります。ビルドスペックをソースディレクトリから定義するのではなく、CodeBuild または S3 に直接プロビジョニングするかを選択できます (https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html を参照)。
それを確認するには、flask-app フォルダーに移動し、直下にある docker_buildspec.yaml という名前のファイルを開きます。
次の内容が表示されるはずです。
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
build:
commands:
- echo Build started on `date`
- docker build -t $ECR_REPO_URI:latest .
- docker tag $ECR_REPO_URI:latest $ECR_REPO_URI:$CODEBUILD_RESOLVED_SOURCE_VERSION
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker images...
- docker push $ECR_REPO_URI:latest
- docker push $ECR_REPO_URI:$CODEBUILD_RESOLVED_SOURCE_VERSION
- echo Writing image definitions file...
- printf '[{"name":"flask-app","imageUri":"%s"}]' $ECR_REPO_URI:latest > imagedefinitions.json
- cat imagedefinitions.json
artifacts:
files: imagedefinitions.json
Buildspecs は、ビルドの実行に CodeBuild が使用するビルドコマンドと関連設定の集合です。各セクションを順を追ってみましょう。
$ プレフィックスで示される環境変数がいくつかあります。これは、ビルドプロジェクトが実行されるたびに AWS CodeBuild によって定義され、提供されます。これには、codebuild-docker-project の [ビルドの詳細] ページの [環境変数] セクションに表示されるもの、および CodeBuild のビルトイン環境変数 から使用できる組み込み環境変数があります。(例: $AWS_DEFAULT_REGION)