fix(docker): 构建时按 TARGETARCH 下载 kubectl,移除 backend/kubectl 依赖

- 新增 scripts/install-kubectl.sh,支持 linux amd64/arm64
- Dockerfile.embed 后端 CGO 编译跟随 TARGETARCH,修复 Mac ARM 构建失败
- backend/Dockerfile 同步改为构建时下载 kubectl
This commit is contained in:
Logan.Li committed 2026-06-26 19:06:57 +08:00
1 parent e8d79e409f
commit 9215cd9b8c
3 files changed
+66 -12

No files matched your search

+13 -7
View File
@@ -10,6 +10,7 @@
ARG VERSION=dev
ARG BUILD_TIME=unknown
ARG GIT_COMMIT=unknown
ARG KUBECTL_VERSION=v1.32.2
# ==================== Stage 1: Frontend Builder ====================
FROM node:20-alpine AS frontend-builder
@@ -33,6 +34,7 @@ FROM golang:1.24-alpine AS backend-builder
ARG VERSION
ARG BUILD_TIME
ARG GIT_COMMIT
ARG TARGETARCH
WORKDIR /app
@@ -55,9 +57,8 @@ COPY backend/ ./
RUN rm -rf static && mkdir -p static
COPY --from=frontend-builder /app/dist/ static/
# 构建后端二进制(前端已嵌入,注入版本号)
# local 模式需 CGO(SQLite + redka/mattn-sqlite3)// Logan.Li
RUN CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
# 构建后端二进制(跟随 TARGETARCH,Mac ARM 构建 linux/arm64 避免 CGO 交叉编译失败)// Logan.Li
RUN CGO_ENABLED=1 GOOS=linux GOARCH=${TARGETARCH} go build \
-ldflags="-w -s -X main.Version=${VERSION} -X main.BuildTime=${BUILD_TIME} -X main.GitCommit=${GIT_COMMIT}" \
-o aiops .
@@ -84,17 +85,22 @@ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.vers
# ==================== Stage 4: Runtime ====================
FROM alpine:latest
ARG TARGETARCH
ARG KUBECTL_VERSION=v1.32.2
# 使用国内 Alpine 镜像源加速
RUN sed -i 's|dl-cdn.alpinelinux.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apk/repositories
# 安装运行时依赖(核心最小集,重型工具改为懒加载)// Logan.Li
# bash=kubectl交互终端, curl=健康检查, git=流水线代码拉取, docker-cli=镜像构建推送
# kubectl=预装(~50MB),maven/nodejs/helm → 工具配置Tab懒加载
# kubectl 按 TARGETARCH 构建时下载(linux/amd64|arm64),无需本地 backend/kubectl // Logan.Li
RUN apk --no-cache add ca-certificates tzdata bash curl git docker-cli docker-cli-buildx
# kubectl 预装(本地打包进镜像,避免 Docker build 时网络下载)// Logan.Li
COPY backend/kubectl /usr/local/bin/kubectl
RUN chmod +x /usr/local/bin/kubectl
COPY scripts/install-kubectl.sh /tmp/install-kubectl.sh
RUN chmod +x /tmp/install-kubectl.sh && \
TARGET_OS=linux TARGET_ARCH="${TARGETARCH}" KUBECTL_VERSION="${KUBECTL_VERSION}" \
/tmp/install-kubectl.sh /usr/local/bin/kubectl && \
rm -f /tmp/install-kubectl.sh
# Maven 阿里云镜像加速(maven 懒加载后生效)
RUN mkdir -p /root/.m2 && \