使用AWS CodeBuild将容器镜像推送到ECR

步骤

创建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/zh_cn/codebuild/latest/userguide/getting-started-create-build-project-console.html

将zip文件上传至S3

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

执行构建

    • ビルドを実行します

 

    問題なければSuccessとなり、ECRのほうのimageも更新されます
广告
将在 10 秒后关闭
bannerAds