-
Notifications
You must be signed in to change notification settings - Fork 87
/
Dockerfile.skaffold
177 lines (148 loc) · 7.98 KB
/
Dockerfile.skaffold
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
FROM kotsadm:cache AS builder
ENV PROJECTPATH=/go/src/github.com/replicatedhq/kots
WORKDIR $PROJECTPATH
COPY Makefile ./
COPY Makefile.build ./
COPY go.mod ./
COPY go.sum ./
COPY cmd ./cmd
COPY pkg ./pkg
COPY web/webcontent.go ./web/webcontent.go
COPY web/dist ./web/dist
COPY kotskinds ./kotskinds
ARG DEBUG_KOTSADM=0
RUN make kotsadm
FROM debian:buster
RUN apt-get update && apt-get install -y --no-install-recommends curl gnupg2 \
&& curl -k https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" > /etc/apt/sources.list.d/PostgreSQL.list \
&& apt-get update && apt-get install -y --no-install-recommends \
postgresql-client-10 python-pip git \
&& pip install s3cmd \
&& rm -rf /var/lib/apt/lists/*
ENV GO111MODULE=on
ENV PATH="/usr/local/bin:$PATH"
## python-dateutil pkg is needed for s3cmd to work
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates git gnupg2 python-dateutil \
&& for i in 1 2 3 4 5 6 7 8; do mkdir -p "/usr/share/man/man$i"; done \
&& curl --fail -N -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/PostgreSQL.list \
&& apt-get update && apt-get install -y --no-install-recommends postgresql-client-10 \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /usr/share/man/man*
# KOTS can be configured to use a specific version of kubectl by setting kubectlVersion in the
# kots.io/v1beta1.Application spec. The github.com/replicatedhq/kots/pkg/binaries package will
# discover all kubectl binaries in the KOTS_KUBECTL_BIN_DIR directory for use by KOTS.
ENV KOTS_KUBECTL_BIN_DIR=/usr/local/bin
# Install Kubectl 1.14
ENV Install Kubectl 1.14
ENV KUBECTL_1_14_VERSION=v1.14.10
ENV KUBECTL_1_14_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_14_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_14_SHA256SUM=7729c6612bec76badc7926a79b26e0d9b06cc312af46dbb80ea7416d1fce0b36
RUN curl -fsSLO "${KUBECTL_1_14_URL}" \
&& echo "${KUBECTL_1_14_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.14"
# Install Kubectl 1.16
ENV KUBECTL_1_16_VERSION=v1.16.15
ENV KUBECTL_1_16_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_16_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_16_SHA256SUM=e8913069293156ddf55f243814a22d2384fc18b165efb6200606fdeaad146605
RUN curl -fsSLO "${KUBECTL_1_16_URL}" \
&& echo "${KUBECTL_1_16_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.16"
# Install Kubectl 1.17
ENV KUBECTL_1_17_VERSION=v1.17.17
ENV KUBECTL_1_17_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_17_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_17_SHA256SUM=8329fac94c66bf7a475b630972a8c0b036bab1f28a5584115e8dd26483de8349
RUN curl -fsSLO "${KUBECTL_1_17_URL}" \
&& echo "${KUBECTL_1_17_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.17"
# Install Kubectl 1.18
ENV KUBECTL_1_18_VERSION=v1.18.20
ENV KUBECTL_1_18_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_18_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_18_SHA256SUM=66a9bb8e9843050340844ca6e72e67632b75b9ebb651559c49db22f35450ed2f
RUN curl -fsSLO "${KUBECTL_1_18_URL}" \
&& echo "${KUBECTL_1_18_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.18"
# Install Kubectl 1.19
ENV KUBECTL_1_19_VERSION=v1.19.15
ENV KUBECTL_1_19_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_19_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_19_SHA256SUM=6f2ac7db8cfd59f660abc9891c1bb7da2dabd1cf5e114d836f2ffd39ee677d04
RUN curl -fsSLO "${KUBECTL_1_19_URL}" \
&& echo "${KUBECTL_1_19_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.19"
# Install Kubectl 1.20
ENV KUBECTL_1_20_VERSION=v1.20.11
ENV KUBECTL_1_20_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_20_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_20_SHA256SUM=3a2bf981939df89f807858a481f6f5f2e33a7b9708bd029c8bece434db228efe
RUN curl -fsSLO "${KUBECTL_1_20_URL}" \
&& echo "${KUBECTL_1_20_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.20"
# Install Kubectl 1.21
ENV KUBECTL_1_21_VERSION=v1.21.5
ENV KUBECTL_1_21_URL=https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_1_21_VERSION}/bin/linux/amd64/kubectl
ENV KUBECTL_1_21_SHA256SUM=060ede75550c63bdc84e14fcc4c8ab3017f7ffc032fc4cac3bf20d274fab1be4
RUN curl -fsSLO "${KUBECTL_1_21_URL}" \
&& echo "${KUBECTL_1_21_SHA256SUM} kubectl" | sha256sum -c - \
&& chmod +x kubectl \
&& mv kubectl "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.21" \
&& ln -s "${KOTS_KUBECTL_BIN_DIR}/kubectl-v1.21" "${KOTS_KUBECTL_BIN_DIR}/kubectl"
ENV KOTS_KUSTOMIZE_BIN_DIR=/usr/local/bin
# KOTS can be configured to use a specific version of kustomize by setting kustomizeVersion in the
# kots.io/v1beta1.Application spec. The github.com/replicatedhq/kots/pkg/binaries package will
# discover all kustomize binaries in the KOTS_KUSTOMIZE_BIN_DIR directory for use by KOTS.
# CURRENNTLY ONLY ONE VERSION IS SHIPPED BELOW
# Install kustomize 3
ENV KUSTOMIZE3_VERSION=3.8.10
ENV KUSTOMIZE3_URL=https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v${KUSTOMIZE3_VERSION}/kustomize_v${KUSTOMIZE3_VERSION}_linux_amd64.tar.gz
ENV KUSTOMIZE3_SHA256SUM=10281b6cd16a50fcbb4a762652bf5ab333633d37035fc7f76ee7b941b50b511d
RUN curl -fsSL -o kustomize.tar.gz "${KUSTOMIZE3_URL}" \
&& echo "${KUSTOMIZE3_SHA256SUM} kustomize.tar.gz" | sha256sum -c - \
&& tar -xzvf kustomize.tar.gz \
&& rm kustomize.tar.gz \
&& chmod a+x kustomize \
&& mv kustomize "${KOTS_KUSTOMIZE_BIN_DIR}/kustomize${KUSTOMIZE3_VERSION}" \
&& ln -s "${KOTS_KUSTOMIZE_BIN_DIR}/kustomize${KUSTOMIZE3_VERSION}" "${KOTS_KUSTOMIZE_BIN_DIR}/kustomize3" \
&& ln -s "${KOTS_KUSTOMIZE_BIN_DIR}/kustomize3" "${KOTS_KUSTOMIZE_BIN_DIR}/kustomize"
# KOTS can be configured to use a specific version of helm by setting helmVersion in the
# kots.io/v1beta1.HelmChart spec. The github.com/replicatedhq/kots/pkg/binaries package will
# discover all helm binaries in the KOTS_HELM_BIN_DIR directory for use by KOTS.
ENV KOTS_HELM_BIN_DIR=/usr/local/bin
# Install helm v3
ENV HELM3_VERSION=3.7.1
ENV HELM3_URL=https://get.helm.sh/helm-v${HELM3_VERSION}-linux-amd64.tar.gz
ENV HELM3_SHA256SUM=6cd6cad4b97e10c33c978ff3ac97bb42b68f79766f1d2284cfd62ec04cd177f4
RUN cd /tmp && curl -fsSL -o helm.tar.gz "${HELM3_URL}" \
&& echo "${HELM3_SHA256SUM} helm.tar.gz" | sha256sum -c - \
&& tar -xzvf helm.tar.gz \
&& chmod a+x linux-amd64/helm \
&& mv linux-amd64/helm "${KOTS_HELM_BIN_DIR}/helm${HELM3_VERSION}" \
&& ln -s "${KOTS_HELM_BIN_DIR}/helm${HELM3_VERSION}" "${KOTS_HELM_BIN_DIR}/helm3" \
&& ln -s "${KOTS_HELM_BIN_DIR}/helm3" "${KOTS_HELM_BIN_DIR}/helm" \
&& rm -rf helm.tar.gz linux-amd64
# Install s3cmd
ENV S3CMD_VERSION=2.1.0
ENV S3CMD_URL=https://github.com/s3tools/s3cmd/releases/download/v${S3CMD_VERSION}/s3cmd-${S3CMD_VERSION}.tar.gz
RUN cd /tmp && curl -fsSL -o s3cmd.tar.gz "${S3CMD_URL}" \
&& curl -fsSL -o s3cmd.tar.gz.asc "${S3CMD_URL}.asc" \
&& gpg --keyserver keyserver.ubuntu.com --recv-keys 0x0d37a8f4a5d183d5541d85d9241769189ac3d00b \
&& cat s3cmd.tar.gz.asc \
&& gpg --verify s3cmd.tar.gz.asc s3cmd.tar.gz \
&& tar -xzvf s3cmd.tar.gz \
&& mv s3cmd-${S3CMD_VERSION}/s3cmd /usr/local/bin/s3cmd \
&& mv s3cmd-${S3CMD_VERSION}/S3 /usr/local/bin/S3 \
&& rm -rf s3cmd.tar.gz s3cmd.tar.gz.asc s3cmd-${S3CMD_VERSION}
COPY --from=builder /go/bin/dlv .
COPY --from=builder /go/src/github.com/replicatedhq/kots/bin/kotsadm .
EXPOSE 40000
# Should be entrypoint
ARG DEBUG_KOTSADM=0
ENV DEBUG_KOTSADM=${DEBUG_KOTSADM}
ADD hack/dev/entrypoint.sh .
ENTRYPOINT [ "./entrypoint.sh"]