Files
goalfylearning-admin/build-and-push.sh

83 lines
2.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e # 遇到错误立即退出
# 配置变量
AWS_ACCOUNT_ID="177603749739"
AWS_REGION="us-west-2"
ECR_REGISTRY="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"
IMAGE_NAME="goalfy/goalfymax-admin"
IMAGE_TAG="${1:-latest}" # 默认使用 latest可通过第一个参数指定版本
FULL_IMAGE_NAME="${ECR_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}"
echo "=========================================="
echo "构建和推送 Docker 镜像到 AWS ECR"
echo "=========================================="
echo "镜像名称: ${FULL_IMAGE_NAME}"
echo "=========================================="
# 1. 登录到 AWS ECR
echo "步骤 1/4: 登录到 AWS ECR..."
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY}
if [ $? -ne 0 ]; then
echo "错误: ECR 登录失败,请检查 AWS 凭证配置"
exit 1
fi
echo "✓ ECR 登录成功"
# 2. 构建 Docker 镜像
echo ""
echo "步骤 2/4: 构建 Docker 镜像..."
docker build --platform linux/amd64 -t ${FULL_IMAGE_NAME} -f Dockerfile .
if [ $? -ne 0 ]; then
echo "错误: Docker 镜像构建失败"
exit 1
fi
echo "✓ 镜像构建成功"
# 3. 如果指定了版本标签,同时也打上 latest 标签
if [ "${IMAGE_TAG}" != "latest" ]; then
echo ""
echo "步骤 3/4: 打 latest 标签..."
LATEST_IMAGE_NAME="${ECR_REGISTRY}/${IMAGE_NAME}:latest"
docker tag ${FULL_IMAGE_NAME} ${LATEST_IMAGE_NAME}
echo "✓ latest 标签已创建"
else
echo ""
echo "步骤 3/4: 跳过(已经是 latest 标签)"
fi
# 4. 推送镜像到 ECR
echo ""
echo "步骤 4/4: 推送镜像到 ECR..."
docker push ${FULL_IMAGE_NAME}
if [ $? -ne 0 ]; then
echo "错误: 镜像推送失败"
exit 1
fi
# 如果创建了 latest 标签,也推送它
if [ "${IMAGE_TAG}" != "latest" ]; then
echo "推送 latest 标签..."
docker push ${LATEST_IMAGE_NAME}
fi
echo ""
echo "=========================================="
echo "✓ 完成!镜像已成功推送"
echo "=========================================="
echo "镜像地址: ${FULL_IMAGE_NAME}"
if [ "${IMAGE_TAG}" != "latest" ]; then
echo " ${LATEST_IMAGE_NAME}"
fi
echo "=========================================="
echo ""
echo "下一步: 更新 k8s/deployment.yaml 中的镜像地址为:"
echo " ${FULL_IMAGE_NAME}"