FROM eclipse-temurin:11-jre-jammy
ARG TARGETARCH
ARG HADOOP_VERSION=3.4.3
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates tar gzip \
    && rm -rf /var/lib/apt/lists/*
RUN set -eu; \
    case "$TARGETARCH" in \
      amd64) archive="hadoop-${HADOOP_VERSION}.tar.gz" ;; \
      arm64) archive="hadoop-${HADOOP_VERSION}-aarch64.tar.gz" ;; \
      *) echo "Supported platforms: linux/amd64 and linux/arm64" >&2; exit 1 ;; \
    esac; \
    base="https://archive.apache.org/dist/hadoop/common/hadoop-${HADOOP_VERSION}"; \
    curl -fL --retry 3 "$base/$archive" -o /tmp/hadoop.tar.gz; \
    curl -fL --retry 3 "$base/$archive.sha512" -o /tmp/hadoop.sha512; \
    expected="$(grep -Eo '[[:xdigit:]]{128}' /tmp/hadoop.sha512)"; \
    test "${#expected}" -eq 128; \
    printf '%s  /tmp/hadoop.tar.gz\n' "$expected" | sha512sum -c -; \
    mkdir /opt/hadoop; \
    tar -xzf /tmp/hadoop.tar.gz -C /opt/hadoop --strip-components=1; \
    rm /tmp/hadoop.tar.gz /tmp/hadoop.sha512
ENV HADOOP_HOME=/opt/hadoop
ENV PATH=/opt/hadoop/bin:/opt/hadoop/sbin:$PATH
ENV HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop
ENV HADOOP_LOG_DIR=/tmp/hadoop-logs
ENV HADOOP_HEAPSIZE_MAX=256
RUN groupadd -g 10001 hadoop && useradd -m -u 10001 -g hadoop hadoop \
    && mkdir -p /data/name /data/blocks /tmp/hadoop-logs \
    && chown -R hadoop:hadoop /data /tmp/hadoop-logs
COPY conf/core-site.xml conf/hdfs-site.xml /opt/hadoop/etc/hadoop/
COPY start.sh /opt/lab/start.sh
USER hadoop
WORKDIR /home/hadoop
ENTRYPOINT ["bash", "/opt/lab/start.sh"]
