HADOOP-19723. Build multi-arch hadoop image (#8023) Contributed by Doroszlai Attila
* HADOOP-19723. Build multi-arch hadoop image
Signed-off-by: Shilun Fan <slfan1989@apache.org>
diff --git a/.github/workflows/build-hadoop-image.yaml b/.github/workflows/build-hadoop-image.yaml
index 44790c6..e193d64 100644
--- a/.github/workflows/build-hadoop-image.yaml
+++ b/.github/workflows/build-hadoop-image.yaml
@@ -48,6 +48,12 @@
flavor: |
latest=false
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349
+
- name: Login to ghcr.io
id: login
if: ${{ github.event_name != 'pull_request' }}
@@ -61,7 +67,7 @@
id: build
uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75
with:
- platforms: linux/amd64
+ platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
diff --git a/Dockerfile b/Dockerfile
index bd1e3c2..1291063 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,11 +13,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-FROM apache/hadoop-runner
-ARG HADOOP_URL=https://dlcdn.apache.org/hadoop/common/hadoop-3.4.2/hadoop-3.4.2-lean.tar.gz
-WORKDIR /opt
-RUN sudo rm -rf /opt/hadoop && curl -LSs -o hadoop.tar.gz $HADOOP_URL && tar zxf hadoop.tar.gz && rm hadoop.tar.gz && mv hadoop* hadoop && rm -rf /opt/hadoop/share/doc
+FROM ghcr.io/apache/hadoop-runner:jdk11-u2204
+ARG HADOOP_VERSION=3.4.2
+ARG HADOOP_FLAVOR=-lean
+ARG BASE_URL=https://dlcdn.apache.org/hadoop/common
+ARG TARGETPLATFORM
WORKDIR /opt/hadoop
+RUN set -eux; \
+ echo "Building for ${TARGETPLATFORM}"; \
+ case "${TARGETPLATFORM}" in \
+ linux/amd64) HADOOP_ARCH='' ;; \
+ linux/arm64) HADOOP_ARCH='-aarch64' ;; \
+ *) echo "Unsupported platform: ${TARGETPLATFORM}"; exit 1 ;; \
+ esac; \
+ export HADOOP_URL="${BASE_URL}/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}${HADOOP_ARCH}${HADOOP_FLAVOR}.tar.gz"; \
+ curl -LSs "$HADOOP_URL" | tar -x -z --strip-components 1 && rm -rf /opt/hadoop/share/doc
ADD log4j.properties /opt/hadoop/etc/hadoop/log4j.properties
RUN sudo chown -R hadoop:users /opt/hadoop/etc/hadoop/*
-ENV HADOOP_CONF_DIR /opt/hadoop/etc/hadoop
+ENV HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop