1
1
# syntax=docker/dockerfile:1
2
2
3
3
# build frontend
4
- FROM node:19-alpine as frontend
4
+ FROM node:19-alpine AS frontend
5
5
ARG API_HOST
6
6
ARG USE_API_HOST=yes
7
7
ARG EMBED_UI=yes
@@ -12,31 +12,40 @@ RUN [ $EMBED_UI != yes ] || [ $USE_API_HOST != yes ] || echo "VITE_HOST='$API_HO
12
12
RUN [ $EMBED_UI != yes ] || [ $USE_DIST != no ] || (yarn && yarn build)
13
13
RUN [ $EMBED_UI = yes ] || mkdir dist || echo ""
14
14
15
- # build backend
16
- FROM bitbus/paopao-ce-backend-builder:latest AS backend
15
+ # build go mod cache
16
+ FROM bitbus/paopao-ce-backend-builder:latest AS gomodcache
17
17
ARG API_HOST
18
18
ARG USE_API_HOST=yes
19
19
ARG EMBED_UI=yes
20
20
ARG USE_DIST=no
21
+ ENV GOPROXY=https://goproxy.cn,direct
22
+ WORKDIR /paopao-ce
23
+ COPY go.mod .
24
+ COPY go.sum .
25
+ RUN go mod download
21
26
27
+ # build backend
28
+ FROM gomodcache AS backend
29
+ ARG API_HOST
30
+ ARG USE_API_HOST=yes
31
+ ARG EMBED_UI=yes
32
+ ARG USE_DIST=no
22
33
WORKDIR /paopao-ce
23
34
COPY . .
24
35
COPY --from=frontend /web/dist ./web/dist
25
36
ENV GOPROXY=https://goproxy.cn,direct
26
- RUN --mount=type=cache,target=$GOPATH/go/pkg,id=paopao-ce-gopkg [ $EMBED_UI != yes ] || make buildx TAGS='go_json'
27
- RUN --mount=type=cache,target=$GOPATH/go/pkg,id=paopao-ce-gopkg [ $EMBED_UI = yes ] || make buildx TAGS='slim embed go_json'
37
+ RUN [ $EMBED_UI != yes ] || make build TAGS='go_json'
38
+ RUN [ $EMBED_UI = yes ] || make build TAGS='slim embed go_json'
28
39
29
40
FROM bitbus/paopao-ce-backend-runner:latest
30
41
ARG API_HOST
31
42
ARG USE_API_HOST=yes
32
43
ARG EMBED_UI=yes
33
44
ARG USE_DIST=no
34
45
ENV TZ=Asia/Shanghai
35
-
36
46
WORKDIR /app/paopao-ce
37
47
COPY --from=backend /paopao-ce/release/paopao .
38
48
COPY --from=backend /paopao-ce/config.yaml.sample config.yaml
39
-
40
49
VOLUME ["/app/paopao-ce/custom" ]
41
50
EXPOSE 8008
42
51
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD ps -ef | grep paopao || exit 1
0 commit comments