File size: 2,084 Bytes
98f0a6a
90ebd67
2ed2107
ada499c
937f5bb
2ed2107
98f0a6a
c791fe5
98f0a6a
 
2ed2107
98f0a6a
c791fe5
98f0a6a
 
 
 
5cb2eb2
98f0a6a
 
 
 
 
3fd8f7f
98f0a6a
 
 
3fd8f7f
98f0a6a
3fd8f7f
c5d26b5
1d3d916
64c8703
aeee40c
133a632
 
 
 
aeee40c
e3ca56a
aaea542
0610bba
98f0a6a
 
 
 
 
 
 
 
 
 
b112922
98f0a6a
552e902
a0cb145
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
FROM --platform=$BUILDPLATFORM node:16 AS builder

WORKDIR /src
RUN git clone https://github.com/songquanpeng/one-api.git -b v0.6.10 .

WORKDIR /src/web/default
RUN npm install
RUN cp /src/VERSION .
RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build

WORKDIR /src/web/air
RUN npm install
RUN cp /src/VERSION .
RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build

FROM golang:alpine AS builder2

RUN apk add --no-cache g++ git

ENV GO111MODULE=on \
    CGO_ENABLED=1 \
    GOOS=linux

WORKDIR /src
RUN git clone https://github.com/songquanpeng/one-api.git -b v0.6.8 .

WORKDIR /build
RUN cp /src/go.mod /src/go.sum ./
RUN go mod download
RUN cp -r /src/* .
COPY --from=builder /src/web/build ./web/build
    
# fix
RUN sed -i 's/router.Group("\/v1")/router.Group("\/v1")\n	relayV2Router := router.Group("\/proxies\/v1")Eof/g' router/relay.go
RUN sed -i 's/Eof/\n	models2Router := router.Group("\/proxies\/v1\/models")Eof/g' router/relay.go
RUN sed -i 's/Eof/\n	models2Router.Use(middleware.TokenAuth())\n	{Eof/g' router/relay.go
RUN sed -i 's/Eof/\n		models2Router.GET("", controller.ListModels)Eof/g' router/relay.go
RUN sed -i 's/Eof/\n		models2Router.GET("\/:model", controller.RetrieveModel) }Eof/g' router/relay.go
RUN sed -i 's/Eof/\n	relayV2Router.Use(middleware.RelayPanicRecover(), middleware.TokenAuth(), middleware.Distribute())\n	{Eof/g' router/relay.go
RUN sed -i 's/Eof/\n		relayV2Router.POST("\/chat\/completions", controller.Relay) }/g' router/relay.go
RUN sed -i 's/if strings.HasPrefix(path, "\/v1\/chat\/completions") {/if strings.Contains(path, "\/v1\/chat\/completions") {/g' relay/relaymode/helper.go

RUN go build -trimpath -ldflags "-s -w -X 'github.com/songquanpeng/one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o one-api

FROM alpine

RUN apk update \
    && apk upgrade \
    && apk add --no-cache ca-certificates tzdata \
    && update-ca-certificates 2>/dev/null || true

COPY --from=builder2 /build/one-api /
EXPOSE 3000
WORKDIR /data
RUN chmod -R 777 /data
ENTRYPOINT ["/one-api"]