AWSでDockerを使ったサービスをどうこうしようとすると、
どこでビルドするの問題が生じる。
CICDのフローでどうやって組み込むかが課題になるよね。
今回はAWS CodeBuildでDocker Imageをビルドして
ECRにプッシュするための設定を書き溜め。
buildspec.ymlにdocker buildの手順を追加する
buildspec.ymlを下記のように作る。
version 0.2以降ではinstall時にruntime-versionsを指定しないとエラーになるので
書き忘れないようにね。今回の場合はdocker: 18を指定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
version: 0.2 phases: install: runtime-versions: docker: 18 pre_build: commands: - echo Log in to Amazon ECR - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION) build: commands: - echo Started on `date` - echo Building the Docker image - docker build -t mytempimage . - docker tag mytempimage:$IMAGE_TAG $ImageRepository:$IMAGE_TAG - echo Push the Docker image to AWS ECR - docker push $ImageRepository:$IMAGE_TAG post_build: commands: - echo Completed on `date` |
流れとしてはこんな感じ。
- ECRにログイン
- 手元のDockerfileを使ってdocker buildを実行
- ECR向けにtagを付与
- ECRに作ったDockerImageをpushする
どのリポジトリにするかだったりは環境変数で指定できるから
ImageRepositoryだったりはご自由にどうぞ。
あとはこのbuildspec.ymlとDockerfileをzip化して
S3に配置すればいける。
runtime-versionの指定については公式をどうぞ。
https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-env-ref-available.html
ECRへのRole設定とかは近いうちにまた記事にします。
じゃあね〜〜〜〜。