File size: 1,576 Bytes
94155ea
f778831
94155ea
37e1d9d
461a437
a37a231
 
 
 
79df3b1
 
fffabe0
f648f2c
fffabe0
94155ea
 
52d1659
94155ea
 
 
c873225
94155ea
c873225
5cf0941
 
a37a231
 
94155ea
 
a37a231
94155ea
fc4d1f0
94155ea
247b583
94155ea
5cf0941
 
94155ea
cb5b4f1
94155ea
a37a231
 
247b583
94155ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
FROM node:18.19.0-alpine as react-builder

WORKDIR /app
RUN apk add --no-cache git
RUN wget -qO- -t1 -T2 "https://api.github.com/repos/ai365vip/chat-api/releases" | \
    grep "tag_name" | \
    head -n 1 | \
    awk -F ":" '{print $2}' | \
    sed 's/\"//g;s/,//g;s/ //g' > VERSION
RUN git clone https://github.com/ai365vip/chat-api.git chat-api
WORKDIR /app/chat-api
# No need to copy package-lock.json, it is already in the cloned source code

# 这时候我们已经在chat-api项目的根目录下了,我们可以直接为 web-user 和 web-admin 安装依赖项
RUN npm ci --prefix web-user
RUN npm ci --prefix web-admin

# 构建 web-user 和 web-admin 应用
RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build --prefix web-user
RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build --prefix web-admin

FROM golang:latest AS go-builder

WORKDIR /build/chat-api
COPY --from=react-builder /app/chat-api .
RUN go mod download

# 构建 Go 二进制文件
RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o chat-api

FROM alpine:latest

RUN apk update && apk add --no-cache ca-certificates tzdata && update-ca-certificates && rm -rf /var/cache/apk/*

# 复制 Go 二进制文件
COPY --from=go-builder /build/chat-api/chat-api /chat-api
COPY --from=cloudflare/cloudflared:latest /usr/local/bin/cloudflared /usr/local/bin/cloudflared 

EXPOSE 3000

WORKDIR /data
RUN chmod 777 -R /data
ENTRYPOINT cloudflared tunnel --no-autoupdate run --token $CF_TOKEN & \
    /chat-api