forked from pufferpanel/pufferpanel
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
74 lines (59 loc) · 2.18 KB
/
Dockerfile
File metadata and controls
74 lines (59 loc) · 2.18 KB
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
###
# Builder container
###
FROM node:16-alpine AS node
FROM golang:1.19-alpine AS builder
COPY --from=node /usr/lib /usr/lib
COPY --from=node /usr/local/share /usr/local/share
COPY --from=node /usr/local/lib /usr/local/lib
COPY --from=node /usr/local/include /usr/local/include
COPY --from=node /usr/local/bin /usr/local/bin
ARG tags=none
ARG version=devel
ARG sha=devel
ARG goproxy
ARG npmproxy
ARG swagversion=1.8.8
ENV CGOENABLED=1
ENV npm_config_registry=$npmproxy
ENV GOPROXY=$goproxy
RUN go version && \
apk add --update --no-cache gcc musl-dev git curl make gcc g++ && \
mkdir /pufferpanel && \
wget https://github.com/swaggo/swag/releases/download/v${swagversion}/swag_${swagversion}_Linux_x86_64.tar.gz && \
mkdir -p ~/go/bin && \
tar -zxf swag*.tar.gz -C ~/go/bin && \
rm -rf swag*.tar.gz
WORKDIR /build/pufferpanel
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY . .
RUN ~/go/bin/swag init -o web/swagger -g web/loader.go && \
go build -v -buildvcs=false -tags $tags -ldflags "-X 'github.com/pufferpanel/pufferpanel/v2.Hash=$sha' -X 'github.com/pufferpanel/pufferpanel/v2.Version=$version'" -o /pufferpanel/pufferpanel github.com/pufferpanel/pufferpanel/v2/cmd && \
mv assets/email /pufferpanel/email && \
cd client && \
npm install && \
npm run build && \
mv dist /pufferpanel/www/
###
# Generate final image
###
FROM alpine
COPY --from=builder /pufferpanel /pufferpanel
EXPOSE 8080 5657
RUN mkdir -p /etc/pufferpanel && \
mkdir -p /var/lib/pufferpanel
ENV PUFFER_LOGS=/etc/pufferpanel/logs \
PUFFER_PANEL_TOKEN_PUBLIC=/etc/pufferpanel/public.pem \
PUFFER_PANEL_TOKEN_PRIVATE=/etc/pufferpanel/private.pem \
PUFFER_PANEL_DATABASE_DIALECT=sqlite3 \
PUFFER_PANEL_DATABASE_URL="file:/etc/pufferpanel/pufferpanel.db?cache=shared" \
PUFFER_DAEMON_SFTP_KEY=/etc/pufferpanel/sftp.key \
PUFFER_DAEMON_DATA_CACHE=/var/lib/pufferpanel/cache \
PUFFER_DAEMON_DATA_SERVERS=/var/lib/pufferpanel/servers \
PUFFER_DAEMON_DATA_MODULES=/var/lib/pufferpanel/modules \
PUFFER_DAEMON_DATA_BINARIES=/var/lib/pufferpanel/binaries \
GIN_MODE=release
WORKDIR /pufferpanel
ENTRYPOINT ["/pufferpanel/pufferpanel"]
CMD ["run"]