inksiyu commited on
Commit
2a50d24
1 Parent(s): 4acecd8

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +14 -38
Dockerfile CHANGED
@@ -1,62 +1,38 @@
1
- # 先为克隆Git仓库设置一个临时的基础镜像
2
- FROM alpine/git as git-clone
3
  WORKDIR /app
4
- # 克隆特定分支的代码
5
- RUN git clone --branch sunchaowang --single-branch https://github.com/sunchaowang/new-api.git .
6
 
7
- # 使用node镜像构建前端
8
  FROM node:16 as builder
9
-
10
  WORKDIR /build
11
-
12
- # 现在从git-clone阶段复制代码
13
- COPY --from=git-clone /app/web/package.json .
14
- RUN npm config set registry https://registry.npmmirror.com/
15
  RUN npm install
16
- # 再次从git-clone阶段复制代码
17
- COPY --from=git-clone /app/web .
18
- COPY --from=git-clone /app/VERSION .
19
  RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build
20
 
21
- # 使用golang镜像构建后端
22
  FROM golang AS builder2
23
-
24
  ENV GO111MODULE=on \
25
  CGO_ENABLED=1 \
26
  GOOS=linux
27
-
28
  WORKDIR /build
29
- # 从git-clone阶段复制Go模块文件
30
- COPY --from=git-clone /app/go.mod .
31
-
32
- COPY --from=git-clone /app/go.sum .
33
  RUN go mod download
34
- # 从builder阶段复制前端构建产物
35
- COPY --from=builder /build/build /build/web/build
36
- # 从git-clone阶段复制所有后端代码
37
- COPY --from=git-clone /app .
38
  RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o one-api
39
 
40
- # 设置最终的基础镜像
41
  FROM alpine
42
-
43
  RUN apk update \
44
  && apk upgrade \
45
  && apk add --no-cache ca-certificates tzdata \
46
  && update-ca-certificates 2>/dev/null || true
47
-
48
- # 从builder2阶段复制构建的可执行文件
49
  COPY --from=builder2 /build/one-api /
50
-
51
- # 删除临时文件
52
- RUN rm -rf /app
53
-
54
- EXPOSE 3000
55
- ENV PORT 3000
56
-
57
- # ENV GLOBAL_WEB_RATE_LIMIT=600
58
- # ENV GLOBAL_API_RATE_LIMIT=1800
59
-
60
  WORKDIR /data
61
  RUN chmod -R 777 /data
62
  ENTRYPOINT ["/one-api"]
 
 
1
+ # Stage 1: clone the project
2
+ FROM alpine/git as clone
3
  WORKDIR /app
4
+ RUN git clone https://github.com/Calcium-Ion/new-api.git
 
5
 
6
+ # Stage 2: Node builder
7
  FROM node:16 as builder
 
8
  WORKDIR /build
9
+ COPY --from=clone /app/new-api/web/package.json .
 
 
 
10
  RUN npm install
11
+ COPY --from=clone /app/new-api/web .
12
+ COPY --from=clone /app/new-api/VERSION .
 
13
  RUN DISABLE_ESLINT_PLUGIN='true' REACT_APP_VERSION=$(cat VERSION) npm run build
14
 
15
+ # Stage 3: Go builder
16
  FROM golang AS builder2
 
17
  ENV GO111MODULE=on \
18
  CGO_ENABLED=1 \
19
  GOOS=linux
 
20
  WORKDIR /build
21
+ COPY --from=clone /app/new-api/go.mod .
22
+ COPY --from=clone /app/new-api/go.sum .
 
 
23
  RUN go mod download
24
+ COPY --from=clone /app/new-api .
25
+ COPY --from=builder /build/build ./web/build
 
 
26
  RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o one-api
27
 
28
+ # Stage 4: Final stage
29
  FROM alpine
 
30
  RUN apk update \
31
  && apk upgrade \
32
  && apk add --no-cache ca-certificates tzdata \
33
  && update-ca-certificates 2>/dev/null || true
 
 
34
  COPY --from=builder2 /build/one-api /
 
 
 
 
 
 
 
 
 
 
35
  WORKDIR /data
36
  RUN chmod -R 777 /data
37
  ENTRYPOINT ["/one-api"]
38
+ EXPOSE 3000