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 |