|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
WORKDIR /app/chat-api-main/web-admin |
|
|
RUN npm install && \ |
|
|
npm run build |
|
|
|
|
|
|
|
|
WORKDIR /app/chat-api-main/web-user |
|
|
RUN npm install && \ |
|
|
npm run build |
|
|
|
|
|
|
|
|
FROM golang:latest AS backend-builder |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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"] |
|
|
|