You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vh...@apache.org on 2026/08/05 10:45:12 UTC
(hudi) 11/13: chore(docker): silence Dockerfile lint warnings across image set (#18664)
This is an automated email from the ASF dual-hosted git repository.
voonhous pushed a commit to branch release-1.2.1
in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 8d0358e760dfa4e57a380b7c8171c5f795b4b33a
Author: voonhous <vo...@gmail.com>
AuthorDate: Thu Jun 4 11:32:01 2026 +0800
chore(docker): silence Dockerfile lint warnings across image set (#18664)
Three classes of buildkit warnings are addressed in the Hudi docker tree:
- LegacyKeyValueFormat: rewrite all `ENV KEY VALUE` to `ENV KEY=VALUE`
across 13 Dockerfiles. Quoted values and ${VAR} expansion preserved.
- UndefinedVar: re-declare HADOOP_DN_PORT, HADOOP_WEBHDFS_PORT, and
HADOOP_HISTORY_PORT as ARG after the FROM line in datanode, namenode,
and historyserver. Pre-FROM ARGs do not propagate into the build stage,
so the corresponding ENV expansions were silently empty.
- JSONArgsRecommended: change `CMD startup.sh` to `CMD ["startup.sh"]`
in hive_base so SIGTERM is delivered to the script directly instead of
through a /bin/sh -c wrapper.
No runtime behavior change beyond the metastore/hiveserver now receiving
shutdown signals correctly.
(cherry picked from commit c40f765ce58d306ed299499781690f785c6bfdd9)
---
docker/hoodie/hadoop/base/Dockerfile | 10 +++++-----
docker/hoodie/hadoop/base_java11/Dockerfile | 10 +++++-----
docker/hoodie/hadoop/base_java17/Dockerfile | 2 +-
docker/hoodie/hadoop/datanode/Dockerfile | 3 ++-
docker/hoodie/hadoop/historyserver/Dockerfile | 3 ++-
docker/hoodie/hadoop/hive_base/Dockerfile | 14 +++++++-------
docker/hoodie/hadoop/namenode/Dockerfile | 3 ++-
docker/hoodie/hadoop/prestobase/Dockerfile | 20 ++++++++++----------
docker/hoodie/hadoop/spark_base/Dockerfile | 26 +++++++++++++-------------
docker/hoodie/hadoop/sparkadhoc/Dockerfile | 10 +++++-----
docker/hoodie/hadoop/sparkmaster/Dockerfile | 6 +++---
docker/hoodie/hadoop/sparkworker/Dockerfile | 6 +++---
docker/hoodie/hadoop/trinobase/Dockerfile | 8 ++++----
13 files changed, 62 insertions(+), 59 deletions(-)
diff --git a/docker/hoodie/hadoop/base/Dockerfile b/docker/hoodie/hadoop/base/Dockerfile
index 546da57459d2..1a36fc344e36 100644
--- a/docker/hoodie/hadoop/base/Dockerfile
+++ b/docker/hoodie/hadoop/base/Dockerfile
@@ -20,12 +20,12 @@ MAINTAINER Hoodie
USER root
# Default to UTF-8 file.encoding
-ENV LANG C.UTF-8
+ENV LANG=C.UTF-8
-ARG HADOOP_VERSION=3.3.4
+ARG HADOOP_VERSION=3.3.4
ARG HADOOP_URL=https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz
-ENV HADOOP_VERSION ${HADOOP_VERSION}
-ENV HADOOP_URL ${HADOOP_URL}
+ENV HADOOP_VERSION=${HADOOP_VERSION}
+ENV HADOOP_URL=${HADOOP_URL}
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get -yq update && apt-get -yq install curl wget netcat procps \
@@ -46,7 +46,7 @@ ENV MULTIHOMED_NETWORK=1
ENV HADOOP_HOME=${HADOOP_PREFIX}
ENV HADOOP_INSTALL=${HADOOP_HOME}
ENV USER=root
-ENV PATH /usr/bin:/bin:$HADOOP_PREFIX/bin/:$PATH
+ENV PATH=/usr/bin:/bin:$HADOOP_PREFIX/bin/:$PATH
# Exposing a union of ports across hadoop versions
# Well known ports including ssh
diff --git a/docker/hoodie/hadoop/base_java11/Dockerfile b/docker/hoodie/hadoop/base_java11/Dockerfile
index 42333067b569..121f94cd09ea 100644
--- a/docker/hoodie/hadoop/base_java11/Dockerfile
+++ b/docker/hoodie/hadoop/base_java11/Dockerfile
@@ -20,12 +20,12 @@ LABEL maintainer="Hoodie"
USER root
# Default to UTF-8 file.encoding
-ENV LANG C.UTF-8
+ENV LANG=C.UTF-8
-ARG HADOOP_VERSION=2.8.4
+ARG HADOOP_VERSION=2.8.4
ARG HADOOP_URL=https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz
-ENV HADOOP_VERSION ${HADOOP_VERSION}
-ENV HADOOP_URL ${HADOOP_URL}
+ENV HADOOP_VERSION=${HADOOP_VERSION}
+ENV HADOOP_URL=${HADOOP_URL}
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get -yq update && apt-get -yq install curl wget netcat procps \
@@ -45,7 +45,7 @@ ENV MULTIHOMED_NETWORK=1
ENV HADOOP_HOME=${HADOOP_PREFIX}
ENV HADOOP_INSTALL=${HADOOP_HOME}
ENV USER=root
-ENV PATH /usr/bin:/bin:$HADOOP_PREFIX/bin/:$PATH
+ENV PATH=/usr/bin:/bin:$HADOOP_PREFIX/bin/:$PATH
# Exposing a union of ports across hadoop versions
# Well known ports including ssh
diff --git a/docker/hoodie/hadoop/base_java17/Dockerfile b/docker/hoodie/hadoop/base_java17/Dockerfile
index a5c265d3aaac..6d513fd3eb07 100644
--- a/docker/hoodie/hadoop/base_java17/Dockerfile
+++ b/docker/hoodie/hadoop/base_java17/Dockerfile
@@ -36,7 +36,7 @@ LABEL maintainer="Hoodie"
USER root
# Default to UTF-8 file.encoding
-ENV LANG C.UTF-8
+ENV LANG=C.UTF-8
ARG HADOOP_VERSION=3.4.0
ENV HADOOP_VERSION=${HADOOP_VERSION}
diff --git a/docker/hoodie/hadoop/datanode/Dockerfile b/docker/hoodie/hadoop/datanode/Dockerfile
index bc157214f182..b37a60fd1005 100644
--- a/docker/hoodie/hadoop/datanode/Dockerfile
+++ b/docker/hoodie/hadoop/datanode/Dockerfile
@@ -20,7 +20,8 @@ ARG HADOOP_DN_PORT=50075
ARG BASE_IMAGE_TAG=java11
FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-base-${BASE_IMAGE_TAG}:latest
-ENV HADOOP_DN_PORT ${HADOOP_DN_PORT}
+ARG HADOOP_DN_PORT
+ENV HADOOP_DN_PORT=${HADOOP_DN_PORT}
ENV HDFS_CONF_dfs_datanode_data_dir=file:///hadoop/dfs/data
RUN mkdir -p /hadoop/dfs/data
diff --git a/docker/hoodie/hadoop/historyserver/Dockerfile b/docker/hoodie/hadoop/historyserver/Dockerfile
index 0c77188e3e51..a7700399f89d 100644
--- a/docker/hoodie/hadoop/historyserver/Dockerfile
+++ b/docker/hoodie/hadoop/historyserver/Dockerfile
@@ -35,7 +35,8 @@ RUN wget https://repo1.maven.org/maven2/org/openlabtesting/leveldbjni/leveldbjni
ENV LD_LIBRARY_PATH="/usr/lib"
ENV JAVA_LIBRARY_PATH="/usr/lib"
-ENV HADOOP_HISTORY_PORT ${HADOOP_HISTORY_PORT}
+ARG HADOOP_HISTORY_PORT
+ENV HADOOP_HISTORY_PORT=${HADOOP_HISTORY_PORT}
ENV YARN_CONF_yarn_timeline___service_leveldb___timeline___store_path=/hadoop/yarn/timeline
RUN mkdir -p /hadoop/yarn/timeline
diff --git a/docker/hoodie/hadoop/hive_base/Dockerfile b/docker/hoodie/hadoop/hive_base/Dockerfile
index f77c4c4e455e..b302e9002767 100644
--- a/docker/hoodie/hadoop/hive_base/Dockerfile
+++ b/docker/hoodie/hadoop/hive_base/Dockerfile
@@ -19,16 +19,16 @@ ARG HADOOP_VERSION=3.3.4
ARG BASE_IMAGE_TAG=java11
FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-base-${BASE_IMAGE_TAG}:latest
-ENV HIVE_HOME /opt/hive
-ENV PATH $HIVE_HOME/bin:$PATH
-ENV HADOOP_HOME /opt/hadoop-$HADOOP_VERSION
+ENV HIVE_HOME=/opt/hive
+ENV PATH=$HIVE_HOME/bin:$PATH
+ENV HADOOP_HOME=/opt/hadoop-$HADOOP_VERSION
WORKDIR /opt
ARG HIVE_VERSION=3.1.3
ARG HIVE_URL=https://archive.apache.org/dist/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz
-ENV HIVE_VERSION ${HIVE_VERSION}
-ENV HIVE_URL ${HIVE_URL}
+ENV HIVE_VERSION=${HIVE_VERSION}
+ENV HIVE_URL=${HIVE_URL}
#Install Hive MySQL, PostgreSQL JDBC
RUN echo "Hive URL is :${HIVE_URL}" && wget ${HIVE_URL} -O hive.tar.gz && \
@@ -62,9 +62,9 @@ RUN chmod +x /usr/local/bin/startup.sh
COPY entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/entrypoint.sh
-ENV PATH $HIVE_HOME/bin/:$PATH
+ENV PATH=$HIVE_HOME/bin/:$PATH
# NOTE: This is the only battle-proven method to inject jars into Hive CLI
ENV AUX_CLASSPATH=file://${HUDI_HADOOP_BUNDLE}
ENTRYPOINT ["entrypoint.sh"]
-CMD startup.sh
+CMD ["startup.sh"]
diff --git a/docker/hoodie/hadoop/namenode/Dockerfile b/docker/hoodie/hadoop/namenode/Dockerfile
index 33e2ab4b9955..402d7306297e 100644
--- a/docker/hoodie/hadoop/namenode/Dockerfile
+++ b/docker/hoodie/hadoop/namenode/Dockerfile
@@ -20,7 +20,8 @@ ARG HADOOP_WEBHDFS_PORT=50070
ARG BASE_IMAGE_TAG=java11
FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-base-${BASE_IMAGE_TAG}:latest
-ENV HADOOP_WEBHDFS_PORT ${HADOOP_WEBHDFS_PORT}
+ARG HADOOP_WEBHDFS_PORT
+ENV HADOOP_WEBHDFS_PORT=${HADOOP_WEBHDFS_PORT}
ENV HDFS_CONF_dfs_namenode_name_dir=file:///hadoop/dfs/name
RUN mkdir -p /hadoop/dfs/name
diff --git a/docker/hoodie/hadoop/prestobase/Dockerfile b/docker/hoodie/hadoop/prestobase/Dockerfile
index d40aa9c8f273..7cc82d5421c4 100644
--- a/docker/hoodie/hadoop/prestobase/Dockerfile
+++ b/docker/hoodie/hadoop/prestobase/Dockerfile
@@ -25,15 +25,15 @@ FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-base-${BASE_IMAGE_TAG}:latest as h
ARG PRESTO_VERSION=0.271
-ENV PRESTO_VERSION ${PRESTO_VERSION}
-ENV PRESTO_HOME /opt/presto-server-${PRESTO_VERSION}
-ENV PRESTO_CONF_DIR ${PRESTO_HOME}/etc
-ENV PRESTO_LOG_DIR /var/log/presto
-ENV PRESTO_JVM_MAX_HEAP 2G
-ENV PRESTO_QUERY_MAX_MEMORY 1GB
-ENV PRESTO_QUERY_MAX_MEMORY_PER_NODE 512MB
-ENV PRESTO_DISCOVERY_URI http://presto-coordinator-1:8090
-ENV PATH $PATH:${PRESTO_HOME}/bin
+ENV PRESTO_VERSION=${PRESTO_VERSION}
+ENV PRESTO_HOME=/opt/presto-server-${PRESTO_VERSION}
+ENV PRESTO_CONF_DIR=${PRESTO_HOME}/etc
+ENV PRESTO_LOG_DIR=/var/log/presto
+ENV PRESTO_JVM_MAX_HEAP=2G
+ENV PRESTO_QUERY_MAX_MEMORY=1GB
+ENV PRESTO_QUERY_MAX_MEMORY_PER_NODE=512MB
+ENV PRESTO_DISCOVERY_URI=http://presto-coordinator-1:8090
+ENV PATH=$PATH:${PRESTO_HOME}/bin
RUN set -x \
&& DEBIAN_FRONTEND=noninteractive apt-get -yq update \
@@ -78,7 +78,7 @@ COPY lib/* /usr/local/lib/
RUN chmod +x /usr/local/bin/entrypoint.sh
ADD target/ /var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/
-ENV HUDI_PRESTO_BUNDLE /var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/hudi-presto-bundle.jar
+ENV HUDI_PRESTO_BUNDLE=/var/hoodie/ws/docker/hoodie/hadoop/prestobase/target/hudi-presto-bundle.jar
RUN cp ${HUDI_PRESTO_BUNDLE} ${PRESTO_HOME}/plugin/hive-hadoop2/
# TODO: the latest master of Presto relies on hudi-presto-bundle, while current Presto releases
# rely on hudi-common and hudi-hadoop-mr 0.9.0, which are pulled in plugin/hive-hadoop2/ in the
diff --git a/docker/hoodie/hadoop/spark_base/Dockerfile b/docker/hoodie/hadoop/spark_base/Dockerfile
index 4210faf21bfe..4a064971536e 100644
--- a/docker/hoodie/hadoop/spark_base/Dockerfile
+++ b/docker/hoodie/hadoop/spark_base/Dockerfile
@@ -19,15 +19,15 @@ ARG HADOOP_VERSION=3.3.4
ARG HIVE_VERSION=3.1.3
FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}
-ENV ENABLE_INIT_DAEMON true
-ENV INIT_DAEMON_BASE_URI http://identifier/init-daemon
-ENV INIT_DAEMON_STEP spark_master_init
+ENV ENABLE_INIT_DAEMON=true
+ENV INIT_DAEMON_BASE_URI=http://identifier/init-daemon
+ENV INIT_DAEMON_STEP=spark_master_init
ARG SPARK_VERSION=3.5.3
ARG SPARK_HADOOP_VERSION=3
-ENV SPARK_VERSION ${SPARK_VERSION}
-ENV HADOOP_VERSION ${SPARK_HADOOP_VERSION}
+ENV SPARK_VERSION=${SPARK_VERSION}
+ENV HADOOP_VERSION=${SPARK_HADOOP_VERSION}
COPY wait-for-step.sh /
COPY execute-step.sh /
@@ -52,16 +52,16 @@ RUN chmod +x /wait-for-step.sh && chmod +x /execute-step.sh && chmod +x /finish-
# Fix the value of PYTHONHASHSEED
# Note: this is needed when you use Python 3.3 or greater
-ENV PYTHONHASHSEED 1
+ENV PYTHONHASHSEED=1
-ENV SPARK_HOME /opt/spark
-ENV SPARK_INSTALL ${SPARK_HOME}
-ENV SPARK_CONF_DIR ${SPARK_HOME}/conf
-ENV PATH $SPARK_INSTALL/bin:$PATH
+ENV SPARK_HOME=/opt/spark
+ENV SPARK_INSTALL=${SPARK_HOME}
+ENV SPARK_CONF_DIR=${SPARK_HOME}/conf
+ENV PATH=$SPARK_INSTALL/bin:$PATH
-ENV SPARK_DRIVER_PORT 5001
-ENV SPARK_UI_PORT 5002
-ENV SPARK_BLOCKMGR_PORT 5003
+ENV SPARK_DRIVER_PORT=5001
+ENV SPARK_UI_PORT=5002
+ENV SPARK_BLOCKMGR_PORT=5003
EXPOSE $SPARK_DRIVER_PORT $SPARK_UI_PORT $SPARK_BLOCKMGR_PORT
diff --git a/docker/hoodie/hadoop/sparkadhoc/Dockerfile b/docker/hoodie/hadoop/sparkadhoc/Dockerfile
index 70105bf3cf36..7c8e900fca53 100644
--- a/docker/hoodie/hadoop/sparkadhoc/Dockerfile
+++ b/docker/hoodie/hadoop/sparkadhoc/Dockerfile
@@ -24,11 +24,11 @@ ARG PRESTO_VERSION=0.268
ARG TRINO_VERSION=368
COPY adhoc.sh /opt/spark
-ENV SPARK_WORKER_WEBUI_PORT 8081
-ENV SPARK_WORKER_LOG /spark/logs
-ENV SPARK_MASTER "spark://spark-master:7077"
-ENV PRESTO_VERSION ${PRESTO_VERSION}
-ENV TRINO_VERSION ${TRINO_VERSION}
+ENV SPARK_WORKER_WEBUI_PORT=8081
+ENV SPARK_WORKER_LOG=/spark/logs
+ENV SPARK_MASTER="spark://spark-master:7077"
+ENV PRESTO_VERSION=${PRESTO_VERSION}
+ENV TRINO_VERSION=${TRINO_VERSION}
ENV BASE_URL=https://repo1.maven.org/maven2
ENV SPARK_BUNDLE_JAR=/var/hoodie/ws/docker/hoodie/hadoop/hive_base/target/hoodie-spark-bundle.jar
diff --git a/docker/hoodie/hadoop/sparkmaster/Dockerfile b/docker/hoodie/hadoop/sparkmaster/Dockerfile
index 94898dcdcfb0..9acaf027606d 100644
--- a/docker/hoodie/hadoop/sparkmaster/Dockerfile
+++ b/docker/hoodie/hadoop/sparkmaster/Dockerfile
@@ -22,9 +22,9 @@ FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}-sparkbase_${S
COPY master.sh /opt/spark
-ENV SPARK_MASTER_PORT 7077
-ENV SPARK_MASTER_WEBUI_PORT 8080
-ENV SPARK_MASTER_LOG /opt/spark/logs
+ENV SPARK_MASTER_PORT=7077
+ENV SPARK_MASTER_WEBUI_PORT=8080
+ENV SPARK_MASTER_LOG=/opt/spark/logs
EXPOSE 8080 7077 6066
diff --git a/docker/hoodie/hadoop/sparkworker/Dockerfile b/docker/hoodie/hadoop/sparkworker/Dockerfile
index c8515c735b4c..5b03834067ec 100644
--- a/docker/hoodie/hadoop/sparkworker/Dockerfile
+++ b/docker/hoodie/hadoop/sparkworker/Dockerfile
@@ -22,9 +22,9 @@ FROM apachehudi/hudi-hadoop_${HADOOP_VERSION}-hive_${HIVE_VERSION}-sparkbase_${S
COPY worker.sh /opt/spark
-ENV SPARK_WORKER_WEBUI_PORT 8081
-ENV SPARK_WORKER_LOG /spark/logs
-ENV SPARK_MASTER "spark://spark-master:7077"
+ENV SPARK_WORKER_WEBUI_PORT=8081
+ENV SPARK_WORKER_LOG=/spark/logs
+ENV SPARK_MASTER="spark://spark-master:7077"
EXPOSE 8081
diff --git a/docker/hoodie/hadoop/trinobase/Dockerfile b/docker/hoodie/hadoop/trinobase/Dockerfile
index 0700fa2f6bfb..a6f7701a4ef4 100644
--- a/docker/hoodie/hadoop/trinobase/Dockerfile
+++ b/docker/hoodie/hadoop/trinobase/Dockerfile
@@ -41,8 +41,8 @@ RUN apt-get install -y \
uuid-runtime \
less
-ENV JAVA_HOME /usr/java/default
-ENV PATH $PATH:$JAVA_HOME/bin
+ENV JAVA_HOME=/usr/java/default
+ENV PATH=$PATH:$JAVA_HOME/bin
WORKDIR /usr/local/bin
RUN wget -q ${BASE_URL}/io/trino/trino-cli/${TRINO_VERSION}/trino-cli-${TRINO_VERSION}-executable.jar
@@ -54,10 +54,10 @@ RUN wget -q ${BASE_URL}/io/trino/trino-server/${TRINO_VERSION}/trino-server-${TR
RUN tar xvzf trino-server-${TRINO_VERSION}.tar.gz -C /usr/local/
RUN ln -s /usr/local/trino-server-${TRINO_VERSION} $TRINO_HOME
-ENV TRINO_BASE_WS /var/hoodie/ws/docker/hoodie/hadoop/trinobase
+ENV TRINO_BASE_WS=/var/hoodie/ws/docker/hoodie/hadoop/trinobase
RUN mkdir -p ${TRINO_BASE_WS}/target/
ADD target/ ${TRINO_BASE_WS}/target/
-ENV HUDI_TRINO_BUNDLE ${TRINO_BASE_WS}/target/hudi-trino-bundle.jar
+ENV HUDI_TRINO_BUNDLE=${TRINO_BASE_WS}/target/hudi-trino-bundle.jar
RUN cp ${HUDI_TRINO_BUNDLE} ${TRINO_HOME}/plugin/hive/
ADD scripts ${TRINO_HOME}/scripts