You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

44 lines
1.7 KiB

#!/usr/bin/env bash
# console 生产环境:仅「构建带版本号的镜像并推送」,不部署。
#
# 单服务 console 打成镜像 console-a11,同时推送 :<version> 与 :latest 两个 tag。
# 部署用 ./prod-deploy.sh <version>。
#
# 用法(在 deploy/console/ 下):
# ./prod-build.sh <version> # version 必须形如 X.Y.Z,如 0.1.1
set -euo pipefail
SVC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SVC_DIR/../.." && pwd)"
BUILD_CONTEXT="$REPO_ROOT/apps/services"
DOCKERFILE="$BUILD_CONTEXT/Dockerfile.console"
blue() { printf "\033[34m%s\033[0m\n" "$*"; }
green() { printf "\033[32m%s\033[0m\n" "$*"; }
red() { printf "\033[31m%s\033[0m\n" "$*"; }
# ── 私有仓库凭据(写死,公开仓库前清空 REGISTRY_PASS)──
IMAGE_NAME="console-a11"
REGISTRY="docker-registry.ideapsound.com"
REGISTRY_USER="admin"
REGISTRY_PASS="li13451234"
PLATFORM="${PLATFORM:-linux/amd64}"
VERSION="${1:-}"
[ -n "$VERSION" ] || { red "用法: ./prod-build.sh <version>(如 0.1.1)"; exit 1; }
if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
red "✗ version 必须形如 0.1.1,当前: $VERSION"; exit 1
fi
[ -f "$DOCKERFILE" ] || { red "✗ 缺少 $DOCKERFILE"; exit 1; }
IMG_VER="$REGISTRY/$IMAGE_NAME:$VERSION"
IMG_LATEST="$REGISTRY/$IMAGE_NAME:latest"
blue ">>> 构建生产镜像 $IMG_VER (+latest) context=$BUILD_CONTEXT"
echo "$REGISTRY_PASS" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
docker build --network=host --platform "$PLATFORM" -f "$DOCKERFILE" -t "$IMG_VER" -t "$IMG_LATEST" "$BUILD_CONTEXT"
docker push "$IMG_VER"
docker push "$IMG_LATEST"
green "✓ 已推送 $IMG_VER 与 $IMG_LATEST"
echo " 部署:./prod-deploy.sh $VERSION"