#!/usr/bin/env bash # 构建并推送 yunyan-sas 镜像到私有 registry # 用法: # ./build.sh # 构建 console + admin,tag=latest # ./build.sh console # 只构建 console # ./build.sh admin # 只构建 admin # TAG=v1.2.3 ./build.sh # 指定版本 tag set -euo pipefail ROOT="$(cd "$(dirname "$0")" && pwd)" REGISTRY="${REGISTRY:-docker-registry.ideapsound.com}" TAG="${TAG:-latest}" TARGET="${1:-all}" green() { echo -e "\033[32m$*\033[0m"; } blue() { echo -e "\033[34m$*\033[0m"; } red() { echo -e "\033[31m$*\033[0m"; } # ── 登录 registry ────────────────────────────────────────── blue ">>> 登录 $REGISTRY ..." docker login "$REGISTRY" -u admin -p li13451234 # ── 构建 console ─────────────────────────────────────────── build_console() { local img="$REGISTRY/yunyan-console:$TAG" blue ">>> 构建 console 镜像: $img" docker build \ --file "$ROOT/apps/services/Dockerfile.console" \ --tag "$img" \ --platform linux/amd64 \ "$ROOT/apps/services/" docker push "$img" green ">>> console 推送完成: $img" } # ── 构建 admin ───────────────────────────────────────────── build_admin() { local img="$REGISTRY/yunyan-admin:$TAG" blue ">>> 构建 admin 镜像: $img" docker build \ --file "$ROOT/apps/admin/Dockerfile" \ --tag "$img" \ --platform linux/amd64 \ "$ROOT/apps/admin/" docker push "$img" green ">>> admin 推送完成: $img" } # ── 执行 ─────────────────────────────────────────────────── case "$TARGET" in console) build_console ;; admin) build_admin ;; all) build_console; build_admin ;; *) red "未知目标: $TARGET(可选:console / admin / all)"; exit 1 ;; esac echo "" green "============================================" green " 镜像构建推送完成 TAG=$TAG" green " $REGISTRY/yunyan-console:$TAG" green " $REGISTRY/yunyan-admin:$TAG" green "============================================" echo "" blue "部署命令:" echo " cd deploy && docker compose pull && docker compose up -d"