#!/bin/bash set -e echo "🔨 开始构建并推送 Docker 镜像到私有仓库..." # 颜色定义 GREEN='\033[0;32m' BLUE='\033[0;34m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' # No Color # 配置 REGISTRY="registry.u9.net3w.com" IMAGE_NAME="php-test" TAG="${1:-latest}" FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}" # 1. 构建 Docker 镜像 echo -e "${BLUE}📦 步骤 1: 构建 Docker 镜像...${NC}" sudo docker build -t ${IMAGE_NAME}:${TAG} . echo -e "${GREEN}✅ 镜像构建完成${NC}\n" # 2. 标记镜像 echo -e "${BLUE}🏷️ 步骤 2: 标记镜像...${NC}" sudo docker tag ${IMAGE_NAME}:${TAG} ${FULL_IMAGE} echo -e "${GREEN}✅ 镜像标记完成: ${FULL_IMAGE}${NC}\n" # 3. 登录私有仓库(如果需要) echo -e "${BLUE}🔐 步骤 3: 登录私有仓库...${NC}" if sudo docker login ${REGISTRY} 2>/dev/null; then echo -e "${GREEN}✅ 登录成功${NC}\n" else echo -e "${YELLOW}⚠️ 登录失败,尝试不使用认证推送...${NC}\n" fi # 4. 推送镜像到私有仓库 echo -e "${BLUE}📤 步骤 4: 推送镜像到私有仓库...${NC}" sudo docker push ${FULL_IMAGE} echo -e "${GREEN}✅ 镜像推送完成${NC}\n" # 5. 显示镜像信息 echo -e "${BLUE}📊 镜像信息:${NC}" echo "================================" echo "Registry: ${REGISTRY}" echo "Image: ${IMAGE_NAME}" echo "Tag: ${TAG}" echo "Full Image: ${FULL_IMAGE}" echo "" echo -e "${GREEN}🎉 构建和推送完成!${NC}" echo "" echo -e "${YELLOW}下一步:${NC}" echo " 1. 提交代码到 Git: git add . && git commit -m 'Update image' && git push" echo " 2. ArgoCD 会自动检测并部署新版本" echo " 3. 或手动触发同步: kubectl apply -f argocd-app.yaml"