-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
70 lines (44 loc) · 1.25 KB
/
Dockerfile
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
# syntax = docker/dockerfile:1
# --- Base image ---
FROM golang:1.20-buster AS base
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download
# --- Development image ---
FROM golangci/golangci-lint:v1.51 AS dev
WORKDIR /app
COPY --from=base /go/pkg/mod /go/pkg/mod
ENTRYPOINT ["tail", "-f", "/dev/null"]
# --- Development watch image ---
FROM cosmtrek/air:v1.51.0 AS watch
RUN apt update && \
apt install -y nginx
# --- Build image ---
FROM base AS build
COPY api ./api
COPY cmd ./cmd
COPY pkg ./pkg
RUN --mount=type=cache,target=/go/pkg/mod \
--mount=type=cache,target=/root/.cache/go-build \
go build -o ./bin/master ./cmd/master
# --- Master release image ---
FROM gcr.io/distroless/base-debian11:debug AS master
WORKDIR /app
COPY docker/docker-entrypoint.sh .
COPY --from=build /app/bin/master .
SHELL ["/busybox/sh", "-c"]
RUN mkdir indexdb && \
chown -R nonroot:nonroot indexdb && \
chmod +x docker-entrypoint.sh
ENV VOLUMES=""
EXPOSE 3000
USER nonroot:nonroot
ENTRYPOINT ["./docker-entrypoint.sh"]
# --- Volume node release image ---
FROM nginx:1.23 AS volume
WORKDIR /app
COPY volume/setup.sh /
RUN chmod +x /setup.sh
CMD ["sh", "-c", "VOLUME=$(hostname) /setup.sh -g 'daemon off;'"]