File size: 1,673 Bytes
8d86370 a2589e1 8d86370 a2589e1 8d86370 f81139d 8d86370 f81139d 8d86370 f81139d 6c47014 a3d0a7f 8d86370 a3d0a7f 8d86370 6c47014 8d86370 6c47014 a2589e1 8d86370 25f71e2 a3d0a7f 25f71e2 8d86370 bad2282 6c47014 f81139d bad2282 6c47014 bad2282 6c47014 bad2282 7ced239 bad2282 7b64a1b bad2282 8d86370 bad2282 |
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# 第一阶段:构建前端
FROM node:18.19.0-alpine as frontend-builder
WORKDIR /app
# 复制并解压源码
COPY chat-api-main.zip .
RUN apk add --no-cache unzip && \
unzip chat-api-main.zip && \
rm chat-api-main.zip
# 构建 web-admin
WORKDIR /app/chat-api-main/web-admin
RUN npm install && \
npm run build
# 构建 web-user
WORKDIR /app/chat-api-main/web-user
RUN npm install && \
npm run build
# 第二阶段:构建后端
FROM golang:latest AS backend-builder
# 设置 Go 环境变量
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
ENV GOSUMDB=off
# 设置工作目录
WORKDIR /go/src/one-api
# 复制源码
COPY chat-api-main.zip .
RUN apt-get update && apt-get install -y unzip && \
unzip chat-api-main.zip && \
mv chat-api-main/* . && \
rm -rf chat-api-main chat-api-main.zip
# 复制前端构建产物
COPY --from=frontend-builder /app/chat-api-main/web-admin/build ./web-admin/build
COPY --from=frontend-builder /app/chat-api-main/web-user/build ./web-user/build
# 更新 Go 模块
RUN go mod tidy && \
go mod download
# 构建二进制文件
RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o bin/chat-api
# 最终阶段:运行环境
FROM nginx:alpine
# 暴露服务端口
EXPOSE 7860
# 创建必要的目录
RUN mkdir -p /data/logs && \
mkdir -p /logs && \
chmod -R 777 /data && \
chmod -R 777 /logs
# 配置 Nginx
COPY nginx.conf /etc/nginx/nginx.conf
# 复制编译后的二进制文件
COPY --from=backend-builder /go/src/one-api/bin/chat-api /chat-api
# 启动脚本
COPY start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]
|