37 lines
1.4 KiB
Bash
37 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# 本地构建 UserBase 前后端镜像并推送到阿里云 ACR
|
|
# 用法: ./build-push.sh [app_tag] [front_tag]
|
|
# 前置环境变量: ACR_NAMESPACE, ACR_USERNAME, ACR_PASSWORD
|
|
# 前置产物: service/target/userbase.jar、front/dist/prod/
|
|
set -euo pipefail
|
|
|
|
APP_VERSION="${1:-${APP_VERSION:-userbase-v1.0}}"
|
|
FRONT_VERSION="${2:-${FRONT_VERSION:-userbase-front-v1.0}}"
|
|
REGISTRY="${ACR_REGISTRY:-registry.cn-hangzhou.aliyuncs.com}"
|
|
NAMESPACE="${ACR_NAMESPACE:?请设置 ACR_NAMESPACE}"
|
|
REPO="${ACR_REPO:-yunhai}"
|
|
|
|
APP_IMG="$REGISTRY/$NAMESPACE/$REPO:$APP_VERSION"
|
|
FRONT_IMG="$REGISTRY/$NAMESPACE/$REPO:$FRONT_VERSION"
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
|
|
[ -f "$ROOT/service/target/userbase.jar" ] || { echo "缺少 service/target/userbase.jar,请先 mvn package"; exit 1; }
|
|
[ -f "$ROOT/front/dist/prod/index.html" ] || { echo "缺少 front/dist/prod,请先 npm run build:prod"; exit 1; }
|
|
|
|
echo "== login $REGISTRY =="
|
|
echo "${ACR_PASSWORD:?请设置 ACR_PASSWORD}" | docker login --username="${ACR_USERNAME:?请设置 ACR_USERNAME}" --password-stdin "$REGISTRY"
|
|
|
|
echo "== build $APP_IMG =="
|
|
docker build -f "$ROOT/service/docker/Dockerfile" -t "$APP_IMG" "$ROOT/service"
|
|
|
|
echo "== build $FRONT_IMG =="
|
|
docker build -f "$ROOT/front/docker/Dockerfile" -t "$FRONT_IMG" "$ROOT/front"
|
|
|
|
echo "== push =="
|
|
docker push "$APP_IMG"
|
|
docker push "$FRONT_IMG"
|
|
|
|
echo "PUSHED $APP_IMG"
|
|
echo "PUSHED $FRONT_IMG"
|