df0e127beb
build-and-deploy / deploy (push) Failing after 11s
- npm 用 npmmirror(淘宝源),go 用 goproxy.cn - 大幅缩短 132 上 npm ci / go mod download 耗时 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38 lines
1.2 KiB
Docker
38 lines
1.2 KiB
Docker
# ── 1. 构建前端(web 用户端 + admin 管理端)──
|
|
FROM node:20-alpine AS web
|
|
WORKDIR /app/web
|
|
COPY web/package*.json ./
|
|
RUN npm config set registry https://registry.npmmirror.com && npm ci
|
|
COPY web/ ./
|
|
RUN npm run build
|
|
|
|
FROM node:20-alpine AS admin
|
|
WORKDIR /app/admin
|
|
COPY admin/package*.json ./
|
|
RUN npm config set registry https://registry.npmmirror.com && npm ci
|
|
COPY admin/ ./
|
|
RUN npm run build
|
|
|
|
# ── 2. 编译 Go(embed 两份前端产物)──
|
|
FROM golang:1.26-alpine AS server
|
|
WORKDIR /app/server
|
|
ENV GOPROXY=https://goproxy.cn,direct
|
|
COPY server/go.mod server/go.sum ./
|
|
RUN go mod download
|
|
COPY server/ ./
|
|
# 用真实构建产物替换 embed 占位目录
|
|
COPY --from=web /app/web/dist ./internal/webfs/dist
|
|
COPY --from=admin /app/admin/dist ./internal/webfs/admin_dist
|
|
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" \
|
|
-o /sundynix-site ./cmd
|
|
|
|
# ── 3. 运行镜像 ──
|
|
FROM alpine:3.20
|
|
RUN apk add --no-cache ca-certificates tzdata && \
|
|
adduser -D -u 10001 app
|
|
ENV TZ=Asia/Shanghai
|
|
COPY --from=server /sundynix-site /usr/local/bin/sundynix-site
|
|
USER app
|
|
EXPOSE 8090
|
|
ENTRYPOINT ["/usr/local/bin/sundynix-site"]
|