Files
SakurasanandClaude b5fb947a5b 构建: --local 改用 docker build 绕开 docker-container 驱动
multiarch builder 嵌套创建构建容器在受限环境报 "can't mask dir
/proc/acpi";本地单架构无需 buildx,直接 docker build 更稳。
多架构 --push 路径保持不变(仍须 docker-container builder)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 20:49:45 +08:00

73 lines
2.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
set -euo pipefail
DOCKER_USER="${DOCKER_USER:-openteam}"
VERSION="${VERSION:-$(git describe --tags --always 2>/dev/null || echo latest)}"
PLATFORMS="linux/amd64,linux/arm64"
# --local:本地构建不推送(默认 docker driver,单架构,tag 不带仓库前缀)。
# 不用 buildx docker-container builder——嵌套创建容器在受限环境会报
# "can't mask dir /proc/acpi",普通 docker build 无此问题。
if [[ "${1:-}" == "--local" ]]; then
LOCAL=1
else
LOCAL=0
fi
if [[ $# -gt 1 || ( $# -eq 1 && "$1" != "--local" ) ]]; then
echo "用法: $0 [--local]" >&2
exit 1
fi
native_arch() {
case "$(uname -m)" in
x86_64|amd64) echo "linux/amd64" ;;
aarch64|arm64) echo "linux/arm64" ;;
*) echo "linux/$(uname -m)" ;;
esac
}
# ---------- 本地模式:单架构,加载到本地 docker ----------
if [[ $LOCAL -eq 1 ]]; then
PLATFORM="$(native_arch)"
echo ""
echo "========================================"
echo "🚀 本地构建 openteam (${PLATFORM})"
echo " tag: openteam:${VERSION}"
echo "========================================"
docker build \
-t "openteam:${VERSION}" \
-t "openteam:latest" \
.
echo ""
echo "✅ 完成!openteam:${VERSION}(已加载到本地 docker)"
exit 0
fi
# ---------- 多架构推送模式:需要 buildx docker-container builder ----------
if ! docker buildx version &>/dev/null; then
echo "❌ docker buildx 不可用"
exit 1
fi
if ! docker buildx inspect multiarch &>/dev/null 2>&1; then
echo "🔧 创建 multiarch builder..."
docker buildx create --name multiarch --driver docker-container --use
else
docker buildx use multiarch
fi
docker buildx inspect --bootstrap
echo ""
echo "========================================"
echo "🚀 构建 openteam (${PLATFORMS})"
echo " tag: ${DOCKER_USER}/openteam:${VERSION}"
echo "========================================"
docker buildx build \
--platform "${PLATFORMS}" \
-t "${DOCKER_USER}/openteam:${VERSION}" \
-t "${DOCKER_USER}/openteam:latest" \
--push \
.
echo ""
echo "✅ 完成!${DOCKER_USER}/openteam:${VERSION}"