Skip to content

Commit 1269d54

Browse files
author
Jiyeon Baek
committed
fix: update Dockerfile to include skopeo and refactor add-container-tag script for improved authentication handling
1 parent 6c68940 commit 1269d54

2 files changed

Lines changed: 31 additions & 38 deletions

File tree

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ RUN apk update \
1212
patch \
1313
curl \
1414
unzip \
15-
aws-cli=${AWS_CLI}
15+
aws-cli=${AWS_CLI} \
16+
# docker cli tool
17+
skopeo
1618

1719
COPY script /script

script/add-container-tag

Lines changed: 28 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ add_docker_tag() {
66
local USERNAME="$3"
77
local PASSWORD="$4"
88

9-
local REGISTRY_URL="https://$(echo $IMAGE_PATH | cut -d'/' -f1)"
9+
local REGISTRY_URL=$(echo $IMAGE_PATH | cut -d'/' -f1)
1010
local REPO_PATH=$(echo $IMAGE_PATH | cut -d'/' -f2- | cut -d':' -f1)
1111
local CURRENT_TAG=$(echo $IMAGE_PATH | cut -d':' -f2)
1212

@@ -23,32 +23,24 @@ add_docker_tag() {
2323

2424
echo "Start tagging: $REGISTRY_URL/$REPO_PATH, $CURRENT_TAG -> $NEW_TAG"
2525

26-
# 인증 헤더 설정
27-
local AUTH_HEADER=""
26+
local SOURCE_IMAGE="docker://$REGISTRY_URL/$REPO_PATH:$CURRENT_TAG"
27+
local DEST_IMAGE="docker://$REGISTRY_URL/$REPO_PATH:$NEW_TAG"
28+
29+
local AUTH_OPTS=""
2830
if [[ -n "$USERNAME" && -n "$PASSWORD" ]]; then
29-
AUTH_HEADER="Authorization: Basic $(echo -n "$USERNAME:$PASSWORD" | base64)"
31+
echo "Using provided credentials for authentication: user=$USERNAME password=$PASSWORD"
32+
AUTH_OPTS="--src-creds $USERNAME:$PASSWORD --dest-creds $USERNAME:$PASSWORD"
3033
fi
3134

32-
local MANIFEST=$(curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "$AUTH_HEADER" "$REGISTRY_URL/v2/$REPO_PATH/manifests/$CURRENT_TAG")
33-
34-
if [[ $? -ne 0 ]]; then
35-
echo "Error: Failed to fetch manifest for tag '$CURRENT_TAG'"
36-
return 1
37-
fi
38-
3935
echo "Adding new tag '$NEW_TAG'..."
40-
local RESULT=$(curl -s -X PUT \
41-
-H "Content-Type: application/vnd.docker.distribution.manifest.v2+json" \
42-
-H "$AUTH_HEADER" \
43-
-d "$MANIFEST" \
44-
"$REGISTRY_URL/v2/$REPO_PATH/manifests/$NEW_TAG")
45-
46-
if [[ $? -ne 0 ]]; then
47-
echo "Error: Failed to add tag '$NEW_TAG': $RESULT"
36+
37+
if skopeo copy $AUTH_OPTS "$SOURCE_IMAGE" "$DEST_IMAGE"; then
38+
echo "Successfully added tag '$NEW_TAG' to $IMAGE_PATH"
39+
return 0
40+
else
41+
echo "Error: Failed to add tag '$NEW_TAG'"
4842
return 1
4943
fi
50-
51-
echo "Successfully added tag '$NEW_TAG' to $IMAGE_PATH"
5244
}
5345

5446

@@ -63,20 +55,25 @@ fi
6355

6456
# if ECR
6557
if [[ "$DOCKER_REGISTRY" == *".dkr.ecr."* ]]; then
66-
TOKEN=$(aws ecr get-login-password --region us-east-1)
58+
USERNAME="AWS"
59+
PASSWORD=$(aws ecr get-login-password --region us-east-1)
60+
else
61+
USERNAME=$(echo "$TOKEN" | base64 -d | cut -d: -f1)
62+
PASSWORD=$(echo "$TOKEN" | base64 -d | cut -d: -f2)
6763
fi
6864

69-
if [[ -z "$TOKEN" && "$DOCKER_REGISTRY" == *".dkr.ecr."* ]]; then
70-
echo "Token is empty"
65+
if [[ -z "$PASSWORD" && "$DOCKER_REGISTRY" == *".dkr.ecr."* ]]; then
66+
echo "Error: ECR token is required for ECR registry"
7167
exit 1
7268
fi
7369

74-
# stdin에서 이미지 목록을 배열로 읽기
75-
IMAGES=()
76-
while IFS= read -r line; do
77-
IMAGES+=("$line")
78-
done
70+
if [[ -z "$TOKEN" ]]; then
71+
echo "Error: Token is required for non-ECR registry"
72+
exit 1
73+
fi
7974

75+
# stdin에서 이미지 목록을 배열로 읽기
76+
mapfile -t IMAGES
8077
if [ ${#IMAGES[@]} -eq 0 ]; then
8178
echo "Error: No images found"
8279
exit 1
@@ -88,14 +85,8 @@ for IMAGE in "${IMAGES[@]}"; do
8885
continue
8986
fi
9087

91-
if [[ $IMAGE == *".dkr.ecr."* ]]; then
92-
USERNAME="AWS"
93-
else
94-
USERNAME=$(echo "$IMAGE" | cut -d'/' -f1)
95-
fi
96-
97-
echo "add_docker_tag $IMAGE $TAG_TO_ADD $USERNAME ****"
98-
add_docker_tag "$IMAGE" "$TAG_TO_ADD" "$USERNAME" "$TOKEN" &
88+
echo "add_docker_tag $IMAGE $TAG_TO_ADD $USERNAME"
89+
add_docker_tag "$IMAGE" "$TAG_TO_ADD" "$USERNAME" "$PASSWORD" &
9990
done
10091
wait
10192

0 commit comments

Comments
 (0)