-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDockerfile
43 lines (33 loc) · 1.21 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
#
# Контейнер сборки
#
FROM golang:1.21 as builder
ENV CGO_ENABLED=0
COPY . /go/src/github.com/dbzer0/go-template
WORKDIR /go/src/github.com/dbzer0/go-template
RUN \
if version=`git describe --abbrev=6 --always --tag`; \
echo "version=$version" && \
cd app && \
go build -a -tags PROJECTNAME -installsuffix PROJECTNAME -ldflags "-X main.version=${version} -s -w" -o /go/bin/PROJECTNAME
#
# Контейнер для получения актуальных SSL/TLS сертификатов
#
FROM alpine as alpine
COPY --from=builder /etc/ssl/certs /etc/ssl/certs
RUN addgroup -S PROJECTNAME && adduser -S PROJECTNAME -G PROJECTNAME
ENTRYPOINT [ "/bin/PROJECTNAME" ]
#
# Контейнер рантайма
#
FROM scratch
COPY --from=builder /go/bin/PROJECTNAME /bin/PROJECTNAME
# копируем сертификаты из alpine
COPY --from=alpine /etc/ssl/certs /etc/ssl/certs
# копируем документацию
COPY --from=alpine /usr/share/PROJECTNAME /usr/share/PROJECTNAME
# копируем пользователя и группу из alpine
COPY --from=alpine /etc/passwd /etc/passwd
COPY --from=alpine /etc/group /etc/group
USER PROJECTNAME
ENTRYPOINT ["/bin/PROJECTNAME"]