使用Shell脚本自动化从Docker Hub获取容器镜像并注册到ECR的步骤

我想用shell脚本将Dockerfile制作成镜像并推送到ECR存储库,实现自动化。

创建ECR仓库

我們將使用AWS CLI進行創建。

aws ecr create-repository --repository-name my-ecr-repo --region ap-northeast-1
Screenshot 2023-09-17 at 16.12.39.png

已确认制作完成。

我希望创建一个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に登録しました。"

我在此执行之后……

Screenshot 2023-09-17 at 17.01.31.png

我确认了对ECR的推送没有任何问题。

这次就到这里吧。

bannerAds