ckst commited on
Commit
f81139d
·
verified ·
1 Parent(s): 133250a

Update Dockerfile

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