jxdn123 commited on
Commit
3e6e225
·
verified ·
1 Parent(s): 2c99b34

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +58 -0
Dockerfile ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ---------- Frontend build ----------
2
+ FROM node:20-alpine3.20 AS web-builder
3
+
4
+ ARG VERSION=1.0.0
5
+ WORKDIR /build/web
6
+
7
+ # 仅拷依赖清单以利用缓存
8
+ COPY ./web/package*.json ./
9
+ RUN npm ci
10
+
11
+ # 复制源码并构建(Vite 只认编译期变量的 VITE_ 前缀)
12
+ COPY ./web ./
13
+ ENV VITE_VERSION=$VERSION
14
+ RUN npm run build
15
+
16
+ # ---------- Backend build ----------
17
+ FROM golang:1.22-alpine3.20 AS go-builder
18
+
19
+ ARG VERSION=1.0.0
20
+ ENV GO111MODULE=on \
21
+ CGO_ENABLED=0 \
22
+ GOOS=linux
23
+ WORKDIR /build
24
+
25
+ COPY go.mod go.sum ./
26
+ RUN go mod download
27
+
28
+ # 复制后端源码
29
+ COPY . .
30
+ # 把前端产物放到后端期望目录
31
+ COPY --from=web-builder /build/web/dist ./web/dist
32
+
33
+ # 更小的二进制,注入版本
34
+ RUN go build -trimpath -ldflags "-s -w -X gpt-load/internal/version.Version=${VERSION}" -o gpt-load
35
+
36
+ # ---------- Runtime ----------
37
+ FROM alpine:3.20
38
+
39
+ # 可选:非 root 运行
40
+ RUN addgroup -S app && adduser -S app -G app
41
+
42
+ WORKDIR /app
43
+ # 仅装必须品;socat 用于把 $PORT 转到 3001(若程序不支持 $PORT)
44
+ RUN apk add --no-cache ca-certificates tzdata socat && update-ca-certificates
45
+
46
+ COPY --from=go-builder /build/gpt-load /app/gpt-load
47
+
48
+ # 运行脚本:若程序只监听 3001,就把 $PORT 转发过去
49
+ COPY ./run.sh /app/run.sh
50
+ RUN chmod +x /app/run.sh
51
+
52
+ # HF 通常注入 PORT=7860;这里给个默认值
53
+ ENV PORT=7860
54
+
55
+ EXPOSE 7860
56
+
57
+ USER app
58
+ ENTRYPOINT ["/app/run.sh"]