@@ -11,11 +11,12 @@ ARG PROTOBUF
1111ARG  TARGETARCH
1212ARG  TARGETOS
1313ARG  STACKABLE_USER_UID
14+ ARG  STACKABLE_USER_GID
1415
1516WORKDIR  /stackable
1617
17- COPY  --chown=${STACKABLE_USER_UID}:0  shared/protobuf/stackable/patches/patchable.toml /stackable/src/shared/protobuf/stackable/patches/patchable.toml
18- COPY  --chown=${STACKABLE_USER_UID}:0  shared/protobuf/stackable/patches/${PROTOBUF} /stackable/src/shared/protobuf/stackable/patches/${PROTOBUF}
18+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  shared/protobuf/stackable/patches/patchable.toml /stackable/src/shared/protobuf/stackable/patches/patchable.toml
19+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  shared/protobuf/stackable/patches/${PROTOBUF} /stackable/src/shared/protobuf/stackable/patches/${PROTOBUF}
1920
2021RUN  <<EOF
2122rpm --install --replacepkgs https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
@@ -26,7 +27,7 @@ microdnf install boost1.78-devel automake libtool
2627microdnf clean all
2728rm -rf /var/cache/yum
2829mkdir /opt/protobuf
29- chown ${STACKABLE_USER_UID}:0  /opt/protobuf
30+ chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  /opt/protobuf
3031EOF
3132
3233USER  ${STACKABLE_USER_UID}
@@ -63,10 +64,10 @@ ln -s "/stackable/jmx/jmx_prometheus_javaagent-${JMX_EXPORTER}.jar" /stackable/j
6364EOF
6465
6566WORKDIR  /build
66- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/stackable/patches/patchable.toml /build/src/hadoop/stackable/patches/patchable.toml
67- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/stackable/patches/${PRODUCT} /build/src/hadoop/stackable/patches/${PRODUCT}
68- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/stackable/fuse_dfs_wrapper /build
69- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/stackable/jmx /stackable/jmx
67+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/stackable/patches/patchable.toml /build/src/hadoop/stackable/patches/patchable.toml
68+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/stackable/patches/${PRODUCT} /build/src/hadoop/stackable/patches/${PRODUCT}
69+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/stackable/fuse_dfs_wrapper /build
70+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/stackable/jmx /stackable/jmx
7071USER  ${STACKABLE_USER_UID}
7172#  Hadoop Pipes requires libtirpc to build, whose headers are not packaged in RedHat UBI, so skip building this module
7273#  Build from source to enable FUSE module, and to apply custom patches.
@@ -140,6 +141,7 @@ FROM stackable/image/java-devel AS hdfs-utils-builder
140141ARG  HDFS_UTILS
141142ARG  PRODUCT
142143ARG  STACKABLE_USER_UID
144+ ARG  STACKABLE_USER_GID
143145
144146#  Starting with hdfs-utils 0.4.0 we need to use Java 17 for compilation.
145147#  We can not simply use java-devel with Java 17, as it is also used to compile Hadoop in this
@@ -158,8 +160,8 @@ ENV JAVA_HOME="/usr/lib/jvm/temurin-17-jdk"
158160USER  ${STACKABLE_USER_UID}
159161WORKDIR  /stackable
160162
161- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/hdfs-utils/stackable/patches/patchable.toml /stackable/src/hadoop/hdfs-utils/stackable/patches/patchable.toml
162- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/hdfs-utils/stackable/patches/${HDFS_UTILS} /stackable/src/hadoop/hdfs-utils/stackable/patches/${HDFS_UTILS}
163+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/hdfs-utils/stackable/patches/patchable.toml /stackable/src/hadoop/hdfs-utils/stackable/patches/patchable.toml
164+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/hdfs-utils/stackable/patches/${HDFS_UTILS} /stackable/src/hadoop/hdfs-utils/stackable/patches/${HDFS_UTILS}
163165
164166#  The Stackable HDFS utils contain an OPA authorizer, group mapper & topology provider.
165167#  The topology provider provides rack awareness functionality for HDFS by allowing users to specify Kubernetes
@@ -196,6 +198,7 @@ ARG TARGETOS
196198ARG  HDFS_UTILS
197199ARG  ASYNC_PROFILER
198200ARG  STACKABLE_USER_UID
201+ ARG  STACKABLE_USER_GID
199202
200203LABEL  \
201204    name="Apache Hadoop"  \
@@ -207,16 +210,16 @@ LABEL \
207210    description="This image is deployed by the Stackable Operator for Apache Hadoop / HDFS." 
208211
209212
210- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hadoop-builder /stackable/hadoop-${PRODUCT}-stackable${RELEASE} /stackable/hadoop-${PRODUCT}-stackable${RELEASE}
211- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hadoop-builder /stackable/hadoop-${PRODUCT}-stackable${RELEASE}-src.tar.gz /stackable/
212- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hadoop-builder /stackable/async-profiler-${ASYNC_PROFILER}-* /stackable/async-profiler-${ASYNC_PROFILER}
213- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hadoop-builder /stackable/jmx /stackable/jmx
214- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hadoop-builder /stackable/protobuf-*-src.tar.gz /stackable/
213+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hadoop-builder /stackable/hadoop-${PRODUCT}-stackable${RELEASE} /stackable/hadoop-${PRODUCT}-stackable${RELEASE}
214+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hadoop-builder /stackable/hadoop-${PRODUCT}-stackable${RELEASE}-src.tar.gz /stackable/
215+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hadoop-builder /stackable/async-profiler-${ASYNC_PROFILER}-* /stackable/async-profiler-${ASYNC_PROFILER}
216+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hadoop-builder /stackable/jmx /stackable/jmx
217+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hadoop-builder /stackable/protobuf-*-src.tar.gz /stackable/
215218
216- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hdfs-utils-builder /stackable/hdfs-utils-${HDFS_UTILS}.jar /stackable/hadoop-${PRODUCT}-stackable${RELEASE}/share/hadoop/common/lib/hdfs-utils-${HDFS_UTILS}.jar
217- COPY  --chown=${STACKABLE_USER_UID}:0  --from=hdfs-utils-builder /stackable/hdfs-utils-${HDFS_UTILS}-src.tar.gz /stackable
219+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hdfs-utils-builder /stackable/hdfs-utils-${HDFS_UTILS}.jar /stackable/hadoop-${PRODUCT}-stackable${RELEASE}/share/hadoop/common/lib/hdfs-utils-${HDFS_UTILS}.jar
220+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  --from=hdfs-utils-builder /stackable/hdfs-utils-${HDFS_UTILS}-src.tar.gz /stackable
218221
219- COPY  --chown=${STACKABLE_USER_UID}:0  hadoop/licenses /licenses
222+ COPY  --chown=${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  hadoop/licenses /licenses
220223
221224#  fuse is required for fusermount (called by fuse_dfs)
222225#  fuse-libs is required for fuse_dfs (not included in fuse)
@@ -232,7 +235,7 @@ microdnf install \
232235  tar
233236microdnf clean all
234237rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}\n "  | sort > /stackable/package_manifest.txt
235- chown ${STACKABLE_USER_UID}:0  /stackable/package_manifest.txt
238+ chown ${STACKABLE_USER_UID}:${STACKABLE_USER_GID}  /stackable/package_manifest.txt
236239chmod g=u /stackable/package_manifest.txt
237240rm -rf /var/cache/yum
238241
@@ -241,15 +244,15 @@ rm -rf /var/cache/yum
241244echo "user_allow_other"  > /etc/fuse.conf
242245
243246ln -s "/stackable/hadoop-${PRODUCT}-stackable${RELEASE}"  /stackable/hadoop
244- chown --no-dereference "${STACKABLE_USER_UID}:0 "  /stackable/hadoop
247+ chown --no-dereference "${STACKABLE_USER_UID}:${STACKABLE_USER_GID} "  /stackable/hadoop
245248chmod g=u "/stackable/hadoop-${PRODUCT}-stackable${RELEASE}" 
246249chmod g=u /stackable/*-src.tar.gz
247250
248251ARCH="${TARGETARCH/amd64/x64}" 
249252mv /stackable/async-profiler-${ASYNC_PROFILER}* "/stackable/async-profiler-${ASYNC_PROFILER-}-${TARGETOS}-${ARCH}" 
250253chmod g=u "/stackable/async-profiler-${ASYNC_PROFILER-}-${TARGETOS}-${ARCH}" 
251254ln -s "/stackable/async-profiler-${ASYNC_PROFILER}-${TARGETOS}-${ARCH}"  /stackable/async-profiler
252- chown --no-dereference "${STACKABLE_USER_UID}:0 "  /stackable/async-profiler
255+ chown --no-dereference "${STACKABLE_USER_UID}:${STACKABLE_USER_GID} "  /stackable/async-profiler
253256
254257chmod g=u /stackable/jmx
255258
@@ -273,7 +276,7 @@ USER ${STACKABLE_USER_UID}
273276
274277ENV  HOME=/stackable
275278ENV  LD_LIBRARY_PATH=/stackable/hadoop/lib/native:/usr/lib/jvm/jre/lib/server
276- ENV  PATH="${PATH}"  :/stackable/hadoop/bin
279+ ENV  PATH="${PATH}:/stackable/hadoop/bin"  
277280ENV  HADOOP_HOME=/stackable/hadoop
278281ENV  HADOOP_CONF_DIR=/stackable/config
279282ENV  ASYNC_PROFILER_HOME=/stackable/async-profiler
0 commit comments