jxdn123 commited on
Commit
b915662
·
verified ·
1 Parent(s): 1cc312a

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +47 -3
Dockerfile CHANGED
@@ -1,5 +1,49 @@
1
- @@
2
- FROM alpine:3.20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
  RUN addgroup -S app && adduser -S app -G app
5
  WORKDIR /app
@@ -15,4 +59,4 @@
15
  @@
16
  -USER app
17
  +USER app
18
- ENTRYPOINT ["/app/run.sh"]
 
1
+ # ---------- 0) 拉取源码 ----------
2
+ FROM alpine:3.20 AS src
3
+ RUN apk add --no-cache git
4
+ ARG REPO_URL=https://github.com/tbphp/gpt-load.git
5
+ # 如需可复现构建,可把 main 改为固定 tag 或 commit
6
+ ARG REPO_REF=main
7
+ WORKDIR /src
8
+ RUN git clone --depth=1 --branch "${REPO_REF}" "${REPO_URL}" .
9
+
10
+ # ---------- 1) 构建前端 ----------
11
+ FROM node:20-alpine3.20 AS web-builder
12
+ ARG VERSION=1.0.0
13
+ WORKDIR /build/web
14
+
15
+ # 利用缓存:先依赖清单后源码
16
+ COPY --from=src /src/web/package*.json ./
17
+ RUN npm ci
18
+ COPY --from=src /src/web ./
19
+ # Vite 只认编译期变量的 VITE_ 前缀
20
+ ENV VITE_VERSION=$VERSION
21
+ RUN npm run build
22
+
23
+ # ---------- 2) 构建后端(Go 1.23) ----------
24
+ FROM golang:1.23-alpine3.20 AS go-builder
25
+ ARG VERSION=1.0.0
26
+ ENV GO111MODULE=on \
27
+ CGO_ENABLED=0 \
28
+ GOOS=linux \
29
+ GOTOOLCHAIN=auto
30
+ WORKDIR /build
31
+
32
+ # 先缓存依赖
33
+ COPY --from=src /src/go.mod ./
34
+ COPY --from=src /src/go.sum ./
35
+ RUN go mod download
36
+
37
+ # 复制全部后端源码
38
+ COPY --from=src /src ./
39
+ # 注入前端产物
40
+ COPY --from=web-builder /build/web/dist ./web/dist
41
+
42
+ # 更小二进制 + 注入版本
43
+ RUN go build -trimpath -ldflags "-s -w -X gpt-load/internal/version.Version=${VERSION}" -o gpt-load
44
+
45
+ # ---------- 3) 运行阶段 ----------
46
+ FROM alpine:3.20
47
 
48
  RUN addgroup -S app && adduser -S app -G app
49
  WORKDIR /app
 
59
  @@
60
  -USER app
61
  +USER app
62
+ ENTRYPOINT ["/app/run.sh"]