1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CodeBuildでECRへコンテナイメージをpush

Posted at

手順

ECRリポジトリの作成を行う

  • コンソールから作成してください

Dockerfileの作成

  • 今回作成したDockerfileはapache2をインストールして、使用するDockerfileです。
FROM ubuntu:20.04

# Dockerイメージのビルド中にデバイスやユーザーの入力を要求するプロンプトが出ないように設定する
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update -y && \
    apt-get install -y apache2

COPY src/index.html /var/www/html/

# mkdirで作成するディレクトリはDockerだと削除される可能性があるので、毎回起動時に作成する
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
 echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
 echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
 echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
 chmod 755 /root/run_apache.sh

EXPOSE 80

CMD /root/run_apache.sh

buildspec.ymlの作成

# 使用されているビルド使用スタンダートのバージョン0.2が最新
version: 0.2
env:
  variables:
    AWS_DEFAULT_REGION: "ap-northeast-1"
    DOCKER_USER: AWS
    REPOSITORY_URI: "<ECRのURIをコピーする>"
    IMAGE_NAME: <作成した>
# phasesにはあとinstallがある
phases:
  pre_build:
    commands:
      - echo "ECRへログイン"
      #codeBuildからECRへのログインは不要だた、CodeBuild以外でも使えるようにするため記載
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username $DOCKER_USER --password-stdin $REPOSITORY_URI
  build:
    commands:
      - echo "ビルド開始"
      - docker build -t "$REPOSITORY_URI/$IMAGE_NAME:latest" .
  post_build:
    commands:
      - echo "ECRへpush"
      - docker push "$REPOSITORY_URI/$IMAGE_NAME:latest"
      - printf '{"Version":"1.0","ImageURI":"%s"}' $REPOSITORY_URI/$IMAGE_NAME:$IMAGE_TAG > imageDetail.json
artifacts:
  files: imageDetail.json

S3のパケットの作成

  • 2つのパケットを作成してください

CodeBuildのプロジェクト作成

  • 下記のTutorialを参考に作成してください

https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/getting-started-create-build-project-console.html

S3にzipファイルをアップロード

  • Dockerfileとsrcとbuildspec.ymlが直下にあるフォルダーをzip化してbuildプロジェクトのS3のインプットに指定したバケットに配置します

ビルドの実行

  • ビルドを実行します
  • 問題なければSuccessとなり、ECRのほうのimageも更新されます
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?