|
| 1 | +# syntax=docker/dockerfile:1.10.0@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5 |
| 2 | +# NOTE: The syntax directive needs to be the first line in a Dockerfile |
| 3 | + |
1 | 4 | # =============
|
2 | 5 | # This file is automatically generated from the templates in stackabletech/operator-templating
|
3 | 6 | # DON'T MANUALLY EDIT THIS FILE
|
4 | 7 | # =============
|
5 |
| -FROM oci.stackable.tech/sdp/ubi9-rust-builder AS builder |
6 | 8 |
|
7 |
| -FROM registry.access.redhat.com/ubi9/ubi-minimal AS operator |
| 9 | +# https://docs.docker.com/build/checks/#fail-build-on-check-violations |
| 10 | +# check=error=true |
| 11 | + |
| 12 | +# We want to automatically use the latest. We also don't tag our images with a version. |
| 13 | +# hadolint ignore=DL3007 |
| 14 | +FROM oci.stackable.tech/sdp/ubi9-rust-builder:latest AS builder |
| 15 | + |
| 16 | + |
| 17 | +# We want to automatically use the latest. |
| 18 | +# hadolint ignore=DL3007 |
| 19 | +FROM registry.access.redhat.com/ubi9/ubi-minimal:latest AS operator |
8 | 20 |
|
9 | 21 | ARG VERSION
|
10 | 22 | ARG RELEASE="1"
|
11 | 23 |
|
12 |
| -LABEL name="Stackable Operator for Apache HDFS" \ |
13 |
| - maintainer="info@stackable.tech" \ |
14 |
| - vendor="Stackable GmbH" \ |
15 |
| - version="${VERSION}" \ |
16 |
| - release="${RELEASE}" \ |
17 |
| - summary="Deploy and manage Apache HDFS clusters." \ |
18 |
| - description="Deploy and manage Apache HDFS clusters." |
| 24 | +# These are chosen at random and are this high on purpose to have very little chance to clash with an existing user or group on the host system |
| 25 | +ARG STACKABLE_USER_GID="574654813" |
| 26 | +ARG STACKABLE_USER_UID="782252253" |
| 27 | + |
| 28 | +# These labels have mostly been superceded by the OpenContainer spec annotations below but it doesn't hurt to include them |
| 29 | +# http://label-schema.org/rc1/ |
| 30 | +LABEL name="Stackable Operator for Apache HDFS" |
| 31 | +LABEL maintainer="info@stackable.tech" |
| 32 | +LABEL vendor="Stackable GmbH" |
| 33 | +LABEL version="${VERSION}" |
| 34 | +LABEL release="${RELEASE}" |
| 35 | +LABEL summary="Deploy and manage Apache HDFS clusters." |
| 36 | +LABEL description="Deploy and manage Apache HDFS clusters." |
| 37 | + |
| 38 | +# Overwriting/Pinning UBI labels |
| 39 | +# https://github.com/projectatomic/ContainerApplicationGenericLabels |
| 40 | +LABEL vcs-ref="" |
| 41 | +LABEL distribution-scope="public" |
| 42 | +LABEL url="https://stackable.tech" |
| 43 | +ARG TARGETARCH |
| 44 | +LABEL architecture="${TARGETARCH}" |
| 45 | +LABEL com.redhat.component="" |
| 46 | +# It complains about it being an invalid label but RedHat uses it and we want to override it and it works.... |
| 47 | +# hadolint ignore=DL3048 |
| 48 | +LABEL com.redhat.license_terms="" |
| 49 | +LABEL io.buildah.version="" |
| 50 | +LABEL io.openshift.expose-services="" |
19 | 51 |
|
| 52 | +# https://github.com/opencontainers/image-spec/blob/036563a4a268d7c08b51a08f05a02a0fe74c7268/annotations.md#annotations |
| 53 | +LABEL org.opencontainers.image.authors="info@stackable.tech" |
| 54 | +LABEL org.opencontainers.image.url="https://stackable.tech" |
| 55 | +LABEL org.opencontainers.image.vendor="Stackable GmbH" |
| 56 | +LABEL org.opencontainers.image.licenses="OSL-3.0" |
| 57 | +LABEL org.opencontainers.image.documentation="https://docs.stackable.tech/home/stable/hdfs/" |
| 58 | +LABEL org.opencontainers.image.version="${VERSION}" |
| 59 | +LABEL org.opencontainers.image.revision="${RELEASE}" |
| 60 | +LABEL org.opencontainers.image.title="Stackable Operator for Apache HDFS" |
| 61 | +LABEL org.opencontainers.image.description="Deploy and manage Apache HDFS clusters." |
| 62 | + |
| 63 | +# https://docs.openshift.com/container-platform/4.16/openshift_images/create-images.html#defining-image-metadata |
| 64 | +# https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md |
| 65 | +LABEL io.openshift.tags="ubi9,stackable,sdp,hdfs" |
| 66 | +LABEL io.k8s.description="Deploy and manage Apache HDFS clusters." |
| 67 | +LABEL io.k8s.display-name="Stackable Operator for Apache HDFS" |
| 68 | + |
| 69 | +RUN <<EOF |
20 | 70 | # Update image and install kerberos client libraries
|
21 | 71 | # install_weak_deps in microdnf does not support the literal "False" as dnf does
|
22 | 72 | # https://github.com/rpm-software-management/microdnf/blob/a600c62f29262d71a6259b70dc220df65a2ab9b5/dnf/dnf-main.c#L176-L189
|
23 |
| -RUN microdnf update -y --setopt=install_weak_deps=0 \ |
24 |
| - && microdnf install -y --setopt=install_weak_deps=0 \ |
25 |
| - krb5-libs \ |
26 |
| - libkadm5 \ |
27 |
| - && microdnf clean all \ |
28 |
| - && rm -rf /var/cache/yum |
| 73 | +microdnf update |
| 74 | +# NOTE (@NickLarsenNZ): Maybe we should consider pinning package versions? |
| 75 | +# hadolint ignore=DL3041 |
| 76 | +microdnf install -y \ |
| 77 | + krb5-libs \ |
| 78 | + libkadm5 \ |
| 79 | + shadow-utils |
| 80 | + |
| 81 | +groupadd --gid ${STACKABLE_USER_GID} --system ${STACKABLE_USER_NAME} |
| 82 | +# The --no-log-init is required to work around a bug/problem in Go/Docker when very large UIDs are used |
| 83 | +# See https://github.com/moby/moby/issues/5419#issuecomment-41478290 for more context |
| 84 | +# Making this a system user prevents a mail dir from being created, expiry of passwords etc. but it will warn: |
| 85 | +# useradd warning: stackable's uid 1000 is greater than SYS_UID_MAX 999 |
| 86 | +# We can safely ignore this warning, to get rid of the warning we could change /etc/login.defs but that does not seem worth it |
| 87 | +# We'll leave the home directory hardcoded to /stackable because I don't want to deal with which chars might be valid and which might not in user name vs. directory |
| 88 | +useradd \ |
| 89 | + --no-log-init \ |
| 90 | + --gid ${STACKABLE_USER_GID} \ |
| 91 | + --uid ${STACKABLE_USER_UID} \ |
| 92 | + --system \ |
| 93 | + --create-home \ |
| 94 | + --home-dir /stackable \ |
| 95 | + stackable |
| 96 | +microdnf remove shadow-utils |
| 97 | +microdnf clean all |
| 98 | +rm -rf /var/cache/yum |
| 99 | +EOF |
29 | 100 |
|
30 | 101 | COPY LICENSE /licenses/LICENSE
|
31 | 102 |
|
32 | 103 | COPY --from=builder /app/* /usr/local/bin/
|
33 |
| -COPY deploy/config-spec/properties.yaml /etc/stackable/hdfs-operator/config-spec/properties.yaml |
34 |
| - |
35 |
| -RUN groupadd -g 1000 stackable && adduser -u 1000 -g stackable -c 'Stackable Operator' stackable |
36 |
| - |
37 |
| -USER stackable:stackable |
| 104 | +# COPY deploy/config-spec/properties.yaml /etc/stackable/hdfs-operator/config-spec/properties.yaml |
| 105 | +# |
| 106 | +USER ${STACKABLE_USER_UID} |
38 | 107 |
|
39 | 108 | ENTRYPOINT ["stackable-hdfs-operator"]
|
40 | 109 | CMD ["run"]
|
0 commit comments