- deploy/docker/build-dev.sh + make image-dev: linux/amd64+arm64 build & push, dev/dev-<sha>/dev-<date> tags, registry inline cache, auto create buildx builder - PUSH=0 falls back to host-arch build with --load for local verification - verified end-to-end (PUSH=0): container frontend build, CGO-free cross compile, upx pack 31.7MB->11.8MB, image smoke test 200
49 lines
1.7 KiB
Bash
Executable File
49 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
# 构建 dev 镜像:默认多平台(amd64/arm64)并推送,PUSH=0 时按本机架构构建并加载到本地
|
|
#
|
|
# 用法:
|
|
# sh deploy/docker/build-dev.sh # 多平台构建并推送 dev 标签
|
|
# PUSH=0 sh deploy/docker/build-dev.sh # 本机架构构建 --load,仅本地
|
|
# REGISTRY_IMAGE=demo/openteam PLATFORMS=linux/amd64 sh deploy/docker/build-dev.sh
|
|
set -e
|
|
|
|
cd "$(dirname "$0")/../.."
|
|
|
|
REGISTRY_IMAGE=${REGISTRY_IMAGE:-mirrors2/opencatd-open}
|
|
PLATFORMS=${PLATFORMS:-linux/amd64,linux/arm64}
|
|
BUILDER=${BUILDER:-xbuilder}
|
|
PUSH=${PUSH:-1}
|
|
DOCKERFILE=${DOCKERFILE:-deploy/docker/Dockerfile}
|
|
|
|
SHORT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
|
DATE_TAG=$(date +%Y%m%d)
|
|
|
|
# 确保 buildx 容器构建器存在(默认 docker driver 不支持多平台)
|
|
docker buildx inspect "$BUILDER" >/dev/null 2>&1 || docker buildx create --name "$BUILDER" --driver docker-container >/dev/null
|
|
|
|
TAGS="-t $REGISTRY_IMAGE:dev -t $REGISTRY_IMAGE:dev-$SHORT_SHA -t $REGISTRY_IMAGE:dev-$DATE_TAG"
|
|
|
|
if [ "$PUSH" = "1" ]; then
|
|
echo ">>> 多平台构建并推送: $PLATFORMS"
|
|
# shellcheck disable=SC2086
|
|
docker buildx build \
|
|
--builder "$BUILDER" \
|
|
--platform "$PLATFORMS" \
|
|
$TAGS \
|
|
--cache-from type=registry,ref="$REGISTRY_IMAGE:dev" \
|
|
--cache-to type=inline \
|
|
-f "$DOCKERFILE" \
|
|
. --push
|
|
echo ">>> 已推送: $REGISTRY_IMAGE:dev (dev-$SHORT_SHA, dev-$DATE_TAG)"
|
|
else
|
|
HOST_ARCH=$(docker version -f '{{.Server.Arch}}')
|
|
echo ">>> 本机架构构建并加载: linux/$HOST_ARCH"
|
|
docker buildx build \
|
|
--builder "$BUILDER" \
|
|
--platform "linux/$HOST_ARCH" \
|
|
$TAGS \
|
|
-f "$DOCKERFILE" \
|
|
. --load
|
|
echo ">>> 已加载本地镜像: $REGISTRY_IMAGE:dev (dev-$SHORT_SHA, dev-$DATE_TAG)"
|
|
fi
|