feat():learning后台管理项目初始化
This commit is contained in:
82
build-and-push.sh
Executable file
82
build-and-push.sh
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user