ops:切换离线发布为本地构建上传

This commit is contained in:
LoveLosita
2026-05-09 17:51:04 +08:00
parent a0f8d6c8cc
commit 689ce60ab4
14 changed files with 888 additions and 208 deletions

View File

@@ -15,6 +15,8 @@ COPY . .
ARG TARGETOS=linux
ARG TARGETARCH=amd64
FROM builder AS suite-builder
# 1. 统一构建所有需要部署的后端服务二进制,避免每个服务维护一份 Dockerfile。
# 2. 输出目录固定为 /out便于运行时镜像按命令复用同一套产物。
RUN --mount=type=cache,target=/root/.cache/go-build \
@@ -23,7 +25,17 @@ RUN --mount=type=cache,target=/root/.cache/go-build \
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o "/out/${service}" "./cmd/${service}"; \
done
FROM ${RUNTIME_IMAGE} AS runtime
FROM builder AS service-builder
ARG SERVICE=api
# 1. 服务级镜像只编译一个入口,减少单服务发布时需要上传的二进制体积。
# 2. SERVICE 必须对应 backend/cmd 下的目录;构建失败会直接暴露错误,避免发布错误镜像。
RUN --mount=type=cache,target=/root/.cache/go-build \
mkdir -p /out && \
CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o "/out/${SERVICE}" "./cmd/${SERVICE}"
FROM ${RUNTIME_IMAGE} AS runtime-base
WORKDIR /app/backend
@@ -33,10 +45,23 @@ RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates tzdata \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /out /app/bin
COPY config.docker.yaml /app/backend/config.docker.yaml
ENV TZ=Asia/Shanghai
ENV SMARTFLOW_CONFIG_FILE=/app/backend/config.docker.yaml
FROM runtime-base AS runtime-suite
COPY --from=suite-builder /out /app/bin
CMD ["/app/bin/api"]
FROM runtime-base AS runtime-service
ARG SERVICE=api
COPY --from=service-builder /out/${SERVICE} /app/bin/${SERVICE}
CMD ["/app/bin/api"]
FROM runtime-suite AS runtime