Dockerfileからイメージを作成してECRリポジトリへプッシュするまでをシェルスクリプトで自動化したいと思います。
ECRリポジトリの作成
AWS CLIを使用して作成していきます。
aws ecr create-repository --repository-name my-ecr-repo --region ap-northeast-1
作成が確認できました。
次にDocker Hubからコンテナイメージを取得してECRに登録するまでの手順をシェルスクリプトを作成していきたいのですが、1つずつ整理していきます。
Dockerfile
以下のDockerfileを使用します。
FROM ubuntu:latest
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure apache
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
Dockerfileからイメージを作成するコマンド
Dockerfileが存在するディレクトリ内で実行
docker build -t my-ecr-repo .
ECRへのログインコマンド
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [AccountID].dkr.ecr.ap-northeast-1.amazonaws.com
DockerイメージをECR用にタグ付け
docker tag my-ecr-repo:latest [AccountID].dkr.ecr.ap-northeast-1.amazonaws.com/my-ecr-repo:latest
ECRリポジトリへプッシュ
docker push 445605964569.dkr.ecr.ap-northeast-1.amazonaws.com/my-ecr-repo:latest
これらを元にシェルスクリプトを書いていきます。
push-ecr.sh
#!/bin/bash
# 変数
DOCKER_IMAGE_NAME="my-ecr-repo" # Dockerイメージ名
AWS_ACCOUNT_ID="[AcountID]" # AWSアカウントID
AWS_REGION="ap-northeast-1" # AWSリージョン
ECR_REPOSITORY="my-ecr-repo" # ECRリポジトリ名
# Dockerfileからイメージを作成
docker build -t $DOCKER_IMAGE_NAME .
# ECRにログイン
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
#イメージをECR用にタグ付け
docker tag $DOCKER_IMAGE_NAME:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY:latest
# イメージをECRにプッシュ
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPOSITORY:latest
echo "コンテナイメージをECRに登録しました。"
こちら実行したところ、、、
無事ECRへのプッシュが確認できました。
今回はこの辺で。