ckst commited on
Commit
8d86370
·
verified ·
1 Parent(s): a2589e1

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +27 -24
Dockerfile CHANGED
@@ -1,47 +1,49 @@
1
- # 第一阶段:解压源码
2
- FROM alpine:latest as extractor
 
 
3
 
4
- WORKDIR /build
5
  COPY chat-api-main.zip .
6
  RUN apk add --no-cache unzip && \
7
  unzip chat-api-main.zip && \
8
  rm chat-api-main.zip
9
 
10
- # 第二阶段:构建前端
11
- FROM node:18.19.0-alpine as frontend-builder
12
-
13
- WORKDIR /app
14
-
15
- # 从解压阶段复制前端源码
16
- COPY --from=extractor /build/chat-api-main/web-admin ./web-admin
17
- COPY --from=extractor /build/chat-api-main/web-user ./web-user
18
-
19
- # 安装依赖并构建 web-admin
20
- WORKDIR /app/web-admin
21
  RUN npm install && \
22
  npm run build
23
 
24
- # 安装依赖并构建 web-user
25
- WORKDIR /app/web-user
26
  RUN npm install && \
27
  npm run build
28
 
29
- # 第三阶段:构建后端
30
  FROM golang:latest AS backend-builder
31
 
32
- WORKDIR /build
 
 
 
 
 
33
 
34
- # 从解压阶段复制所有源码
35
- COPY --from=extractor /build/chat-api-main/* ./
 
 
 
 
36
 
37
  # 复制前端构建产物
38
- COPY --from=frontend-builder /app/web-admin/build ./web-admin/build
39
- COPY --from=frontend-builder /app/web-user/build ./web-user/build
40
 
41
  # 下载依赖
42
  RUN go mod download
43
 
44
- # 构建 Go 二进制文件
45
  RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o bin/chat-api
46
 
47
  # 最终阶段:运行环境
@@ -60,7 +62,7 @@ RUN mkdir -p /data/logs && \
60
  COPY nginx.conf /etc/nginx/nginx.conf
61
 
62
  # 复制编译后的二进制文件
63
- COPY --from=backend-builder /build/bin/chat-api /chat-api
64
 
65
  # 启动脚本
66
  COPY start.sh /start.sh
@@ -68,3 +70,4 @@ RUN chmod +x /start.sh
68
 
69
  CMD ["/start.sh"]
70
 
 
 
1
+ # 第一阶段:构建前端
2
+ FROM node:18.19.0-alpine as frontend-builder
3
+
4
+ WORKDIR /app
5
 
6
+ # 复制并解压源码
7
  COPY chat-api-main.zip .
8
  RUN apk add --no-cache unzip && \
9
  unzip chat-api-main.zip && \
10
  rm chat-api-main.zip
11
 
12
+ # 构建 web-admin
13
+ WORKDIR /app/chat-api-main/web-admin
 
 
 
 
 
 
 
 
 
14
  RUN npm install && \
15
  npm run build
16
 
17
+ # 构建 web-user
18
+ WORKDIR /app/chat-api-main/web-user
19
  RUN npm install && \
20
  npm run build
21
 
22
+ # 第二阶段:构建后端
23
  FROM golang:latest AS backend-builder
24
 
25
+ # 设置 Go 模块
26
+ ENV GO111MODULE=on
27
+ ENV GOPROXY=https://goproxy.io,direct
28
+
29
+ # 设置工作目录
30
+ WORKDIR /go/src/one-api
31
 
32
+ # 复制源码
33
+ COPY chat-api-main.zip .
34
+ RUN apt-get update && apt-get install -y unzip && \
35
+ unzip chat-api-main.zip && \
36
+ mv chat-api-main/* . && \
37
+ rm -rf chat-api-main chat-api-main.zip
38
 
39
  # 复制前端构建产物
40
+ COPY --from=frontend-builder /app/chat-api-main/web-admin/build ./web-admin/build
41
+ COPY --from=frontend-builder /app/chat-api-main/web-user/build ./web-user/build
42
 
43
  # 下载依赖
44
  RUN go mod download
45
 
46
+ # 构建二进制文件
47
  RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o bin/chat-api
48
 
49
  # 最终阶段:运行环境
 
62
  COPY nginx.conf /etc/nginx/nginx.conf
63
 
64
  # 复制编译后的二进制文件
65
+ COPY --from=backend-builder /go/src/one-api/bin/chat-api /chat-api
66
 
67
  # 启动脚本
68
  COPY start.sh /start.sh
 
70
 
71
  CMD ["/start.sh"]
72
 
73
+