58 lines
1.7 KiB
Bash
Executable File
58 lines
1.7 KiB
Bash
Executable File
#!/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"
|