This repository has been archived by the owner on Nov 1, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathDockerfile.flux
61 lines (50 loc) · 2.76 KB
/
Dockerfile.flux
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
FROM alpine:3.15
WORKDIR /home/flux
RUN apk add --no-cache openssh-client ca-certificates tini 'git>=2.24.2' 'gnutls>=3.6.7' 'glib>=2.62.5-r0' gnupg gawk socat
RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing git-secret
RUN set -o pipefail && apk add --no-cache libintl && apk add --no-cache --virtual build_deps gettext && cp /usr/bin/envsubst /usr/local/bin/envsubst && apk del build_deps
# Add git hosts to known hosts file so we can use
# StrickHostKeyChecking with git+ssh
ADD ./known_hosts.sh /home/flux/known_hosts.sh
RUN sh /home/flux/known_hosts.sh /etc/ssh/ssh_known_hosts && \
rm /home/flux/known_hosts.sh
# Add default SSH config, which points at the private key we'll mount
COPY ./ssh_config /etc/ssh/ssh_config
COPY ./kubectl /usr/local/bin/
COPY ./kustomize /usr/local/bin
COPY ./sops /usr/local/bin
# These are pretty static
LABEL maintainer="Flux CD <https://github.com/fluxcd/flux/issues>" \
org.opencontainers.image.title="flux" \
org.opencontainers.image.description="The GitOps operator for Kubernetes" \
org.opencontainers.image.url="https://github.com/fluxcd/flux" \
org.opencontainers.image.source="[email protected]:fluxcd/flux" \
org.opencontainers.image.vendor="Flux CD" \
org.label-schema.schema-version="1.0" \
org.label-schema.name="flux" \
org.label-schema.description="The GitOps operator for Kubernetes" \
org.label-schema.url="https://github.com/fluxcd/flux" \
org.label-schema.vcs-url="[email protected]:fluxcd/flux" \
org.label-schema.vendor="Flux CD"
ENTRYPOINT [ "/sbin/tini", "--", "fluxd" ]
# Get the kubeyaml binary (files) and put them on the path
COPY --from=squaremo/kubeyaml:0.7.0 /usr/lib/kubeyaml /usr/lib/kubeyaml/
ENV PATH=/bin:/sbin:/usr/bin:/usr/local/bin:/usr/lib/kubeyaml
# Create minimal nsswitch.conf file to prioritize the usage of /etc/hosts over DNS queries.
# This resolves the conflict between:
# * fluxd using netgo for static compilation. netgo reads nsswitch.conf to mimic glibc,
# defaulting to prioritize DNS queries over /etc/hosts if nsswitch.conf is missing:
# https://github.com/golang/go/issues/22846
# * Alpine not including a nsswitch.conf file. Since Alpine doesn't use glibc
# (it uses musl), maintainers argue that the need of nsswitch.conf is a Go bug:
# https://github.com/gliderlabs/docker-alpine/issues/367#issuecomment-354316460
RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf
COPY ./kubeconfig /root/.kube/config
COPY ./fluxd /usr/local/bin/
ARG BUILD_DATE
ARG VCS_REF
# These will change for every build
LABEL org.opencontainers.image.revision="$VCS_REF" \
org.opencontainers.image.created="$BUILD_DATE" \
org.label-schema.vcs-ref="$VCS_REF" \
org.label-schema.build-date="$BUILD_DATE"