-
Notifications
You must be signed in to change notification settings - Fork 220
Expand file tree
/
Copy pathDockerfile
More file actions
72 lines (61 loc) · 2.6 KB
/
Dockerfile
File metadata and controls
72 lines (61 loc) · 2.6 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
FROM golang:1.26.0
LABEL org.opencontainers.image.source=https://github.com/slok/sloth
ARG GOLANGCI_LINT_VERSION="2.7.2"
ARG MOCKERY_VERSION="3.5.4"
ARG GOMARKDOC_VERSION="1.1.0"
ARG HELM_VERSION="3.17.0"
ARG YAEGI_VERSION="0.16.1"
ARG ostype=Linux
RUN apt-get update && apt-get install -y \
git \
bash \
zip
RUN wget https://github.com/golangci/golangci-lint/releases/download/v${GOLANGCI_LINT_VERSION}/golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64.tar.gz && \
tar zxvf golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64.tar.gz --strip 1 -C /usr/local/bin/ && \
rm golangci-lint-${GOLANGCI_LINT_VERSION}-linux-amd64.tar.gz && \
\
wget https://github.com/vektra/mockery/releases/download/v${MOCKERY_VERSION}/mockery_${MOCKERY_VERSION}_Linux_x86_64.tar.gz && \
tar zxvf mockery_${MOCKERY_VERSION}_Linux_x86_64.tar.gz -C /tmp && \
mv /tmp/mockery /usr/local/bin/ && \
rm mockery_${MOCKERY_VERSION}_Linux_x86_64.tar.gz && \
\
wget https://github.com/princjef/gomarkdoc/releases/download/v${GOMARKDOC_VERSION}/gomarkdoc_${GOMARKDOC_VERSION}_linux_amd64.tar.gz && \
tar zxvf gomarkdoc_${GOMARKDOC_VERSION}_linux_amd64.tar.gz -C /tmp && \
mv /tmp/gomarkdoc_${GOMARKDOC_VERSION}_linux_amd64/gomarkdoc /usr/local/bin/ && \
rm -rf gomarkdoc_${GOMARKDOC_VERSION}_linux_amd64.tar.gz /tmp/gomarkdoc_${GOMARKDOC_VERSION}_linux_amd64 && \
\
wget https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
tar zxvf helm-v${HELM_VERSION}-linux-amd64.tar.gz -C /tmp && \
mv /tmp/linux-amd64/helm /usr/local/bin/ && \
rm -rf helm-v${HELM_VERSION}-linux-amd64.tar.gz /tmp/linux-amd64 && \
\
wget https://github.com/traefik/yaegi/releases/download/v${YAEGI_VERSION}/yaegi_v${YAEGI_VERSION}_linux_amd64.tar.gz && \
tar zxvf yaegi_v${YAEGI_VERSION}_linux_amd64.tar.gz -C /tmp && \
mv /tmp/yaegi /usr/local/bin/ && \
rm yaegi_v${YAEGI_VERSION}_linux_amd64.tar.gz
# Create user.
ARG uid=1000
ARG gid=1000
RUN bash -c 'if [ ${ostype} == Linux ]; then addgroup -gid $gid app; else addgroup app; fi && \
adduser --disabled-password -uid $uid --ingroup app --gecos "" app && \
chown app:app -R /go'
# Fill Go apps cache:
# Main app.
RUN mkdir -p /tmp/cache
COPY go.mod /tmp/cache
COPY go.sum /tmp/cache
RUN chown app:app -R /tmp/cache
USER app
RUN cd /tmp/cache && \
go mod download
# Helm testing app.
USER root
RUN mkdir -p /tmp/cache
COPY deploy/kubernetes/helm/sloth/tests/go.mod /tmp/cache
COPY deploy/kubernetes/helm/sloth/tests/go.sum /tmp/cache
RUN chown app:app -R /tmp/cache
USER app
RUN cd /tmp/cache && \
go mod download
USER app
WORKDIR /src