使用Shell脚本自动化从Docker Hub获取容器镜像并注册到ECR的步骤
我想用shell脚本将Dockerfile制作成镜像并推送到ECR存储库,实现自动化。
创建ECR仓库
我們將使用AWS CLI進行創建。
aws ecr create-repository --repository-name my-ecr-repo --region ap-northeast-1

已确认制作完成。
我希望创建一个Shell脚本,以整理从Docker Hub获取容器镜像并注册到ECR的步骤。然后我们逐一整理这些步骤。
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
为了ECR,给Docker镜像打上标签。
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
根据这些内容,我将编写一个Shell脚本。
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的推送没有任何问题。
这次就到这里吧。