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.
 
 
 
 
 
 

38 lines
1.5 KiB

#!/usr/bin/env bash
# 构建(可选推送)服务镜像。被 deploy/<服务>/deploy.sh 的 build/deploy 动作调用,也可单独用。
#
# 用法: [TAG=.. REGISTRY=.. PLATFORM=.. PUSH=0] ./build.sh <service>
# service : console | admin
# PUSH=0 : 只构建不推送(本机看效果用;deploy.sh 在 local 环境会自动传 PUSH=0)
#
# 镜像名固定 = <REGISTRY>/starpivot-<service>:<TAG>,与各 docker-compose.yml 对齐。
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SERVICE="${1:-}"
[ -n "$SERVICE" ] || { echo "用法: ./build.sh <console|admin>"; exit 1; }
REGISTRY="${REGISTRY:-registry.ymaikj.com}"
TAG="${TAG:-latest}"
PLATFORM="${PLATFORM:-linux/amd64}"
PUSH="${PUSH:-1}"
# 服务 → 构建上下文 / Dockerfile(见各 Dockerfile 顶部「构建上下文」注释)
case "$SERVICE" in
console) CONTEXT="$REPO_ROOT/apps/services"; DOCKERFILE="$CONTEXT/Dockerfile.console" ;;
admin) CONTEXT="$REPO_ROOT/apps/admin"; DOCKERFILE="$CONTEXT/Dockerfile" ;;
*) echo "未知服务: ${SERVICE}(应为 console|admin)"; exit 1 ;;
esac
[ -f "$DOCKERFILE" ] || { echo "✗ 找不到 Dockerfile: $DOCKERFILE"; exit 1; }
IMAGE="$REGISTRY/starpivot-$SERVICE:$TAG"
echo ">>> 构建 $IMAGE (platform=$PLATFORM, context=$CONTEXT)"
docker build --platform "$PLATFORM" -f "$DOCKERFILE" -t "$IMAGE" "$CONTEXT"
if [ "$PUSH" = 1 ]; then
echo ">>> 推送 $IMAGE"
docker push "$IMAGE"
else
echo ">>> 跳过推送(PUSH=0),镜像已在本地:$IMAGE"
fi