From 4e865cb3b5b81c0b914d0ab4da172498f8436c36 Mon Sep 17 00:00:00 2001 From: Cedric Koch-Hofer Date: Wed, 15 Apr 2026 14:43:42 +0000 Subject: [PATCH 1/2] DAOS-18826 build: Add HTTP/HTTPS proxy support to Dockerfiles Some build environments route outbound traffic through a forward proxy, making the previously supported DAOS_NO_PROXY build argument alone insufficient. This was identified while building on HPE Fort Collins lab nodes. Add DAOS_HTTP_PROXY and DAOS_HTTPS_PROXY build arguments to all four Dockerfiles (el.8, el.9, leap.15, ubuntu), propagating them via ENV instructions (both lowercase and uppercase variants) and persisting them into /etc/environment. Builds without a proxy are unaffected. Signed-off-by: Cedric Koch-Hofer --- utils/docker/Dockerfile.el.8 | 16 +++++++++++++--- utils/docker/Dockerfile.el.9 | 16 +++++++++++++--- utils/docker/Dockerfile.leap.15 | 12 ++++++++++-- utils/docker/Dockerfile.ubuntu | 14 ++++++++++++-- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index bf80f3fc122..353b42f604a 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -1,6 +1,6 @@ # Copyright 2018-2024 Intel Corporation # Copyright 2025 Google LLC -# Copyright 2025 Hewlett Packard Enterprise Development LP +# Copyright 2025-2026 Hewlett Packard Enterprise Development LP # All rights reserved. # # 'recipe' for Docker to build an image of EL 8 based @@ -23,13 +23,23 @@ ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL -# Accept DAOS_NO_PROXY at build time +# Accept DAOS_HTTP_PROXY, DAOS_HTTPS_PROXY, and DAOS_NO_PROXY at build time +ARG DAOS_HTTP_PROXY +ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment +ENV http_proxy=${DAOS_HTTP_PROXY} +ENV HTTP_PROXY=${DAOS_HTTP_PROXY} +ENV https_proxy=${DAOS_HTTPS_PROXY} +ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} ENV no_proxy=${DAOS_NO_PROXY} ENV NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ +RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment # script to install OS updates basic tools and daos dependencies diff --git a/utils/docker/Dockerfile.el.9 b/utils/docker/Dockerfile.el.9 index 82c5287ff26..7af068e9251 100644 --- a/utils/docker/Dockerfile.el.9 +++ b/utils/docker/Dockerfile.el.9 @@ -1,6 +1,6 @@ # Copyright 2022-2024 Intel Corporation # Copyright 2025 Google LLC -# Copyright 2025 Hewlett Packard Enterprise Development LP +# Copyright 2025-2026 Hewlett Packard Enterprise Development LP # All rights reserved. # # 'recipe' for Docker to build an image of EL 9 based @@ -23,13 +23,23 @@ ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL -# Accept DAOS_NO_PROXY at build time +# Accept DAOS_HTTP_PROXY, DAOS_HTTPS_PROXY, and DAOS_NO_PROXY at build time +ARG DAOS_HTTP_PROXY +ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment +ENV http_proxy=${DAOS_HTTP_PROXY} +ENV HTTP_PROXY=${DAOS_HTTP_PROXY} +ENV https_proxy=${DAOS_HTTPS_PROXY} +ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} ENV no_proxy=${DAOS_NO_PROXY} ENV NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ +RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment # script to install OS updates basic tools and daos dependencies diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index 41922a06ffd..fc3e1714d31 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -23,13 +23,21 @@ ARG JENKINS_URL ARG REPOS ARG DAOS_LAB_CA_FILE_URL -# Accept DAOS_NO_PROXY at build time +# Accept DAOS_HTTP_PROXY, DAOS_HTTPS_PROXY, and DAOS_NO_PROXY at build time +ARG DAOS_HTTP_PROXY +ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment +ENV https_proxy=${DAOS_HTTPS_PROXY} +ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} ENV no_proxy=${DAOS_NO_PROXY} ENV NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ +RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment # script to install OS updates basic tools and daos dependencies diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index 589c3f3dd9d..bc92d8078f4 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -1,6 +1,6 @@ # Copyright 2018-2024 Intel Corporation # Copyright 2025 Google LLC -# Copyright 2025 Hewlett Packard Enterprise Development LP +# Copyright 2025-2026 Hewlett Packard Enterprise Development LP # All rights reserved. # # 'recipe' for Docker to build an image of Ubuntu-based environment for building the DAOS project. @@ -25,11 +25,21 @@ ARG DAOS_LAB_CA_FILE_URL # Accept DAOS_NO_PROXY at build time ARG DAOS_NO_PROXY +ARG DAOS_HTTP_PROXY +ARG DAOS_HTTPS_PROXY # Propagate into the build environment +ENV http_proxy=${DAOS_HTTP_PROXY} +ENV HTTP_PROXY=${DAOS_HTTP_PROXY} +ENV https_proxy=${DAOS_HTTPS_PROXY} +ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} ENV no_proxy=${DAOS_NO_PROXY} ENV NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ +RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ + echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ + echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment # script to setup local repo if available and install packages From ec638926c74ba03018acfa46dfa0620d854bf8d8 Mon Sep 17 00:00:00 2001 From: Cedric Koch-Hofer Date: Wed, 15 Apr 2026 14:43:42 +0000 Subject: [PATCH 2/2] DAOS-18826 build: Add HTTP/HTTPS proxy support to Dockerfiles Fix reviewers comments: - Simplify env - Improvement of the environment file update Signed-off-by: Cedric Koch-Hofer --- utils/docker/Dockerfile.el.8 | 31 +++++++++++++++++++------------ utils/docker/Dockerfile.el.9 | 31 +++++++++++++++++++------------ utils/docker/Dockerfile.leap.15 | 29 +++++++++++++++++++---------- utils/docker/Dockerfile.ubuntu | 31 +++++++++++++++++++------------ 4 files changed, 76 insertions(+), 46 deletions(-) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 353b42f604a..62adfb77e5d 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -28,19 +28,26 @@ ARG DAOS_HTTP_PROXY ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment -ENV http_proxy=${DAOS_HTTP_PROXY} -ENV HTTP_PROXY=${DAOS_HTTP_PROXY} -ENV https_proxy=${DAOS_HTTPS_PROXY} -ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} -ENV no_proxy=${DAOS_NO_PROXY} -ENV NO_PROXY=${DAOS_NO_PROXY} +ENV http_proxy=${DAOS_HTTP_PROXY} \ + HTTP_PROXY=${DAOS_HTTP_PROXY} \ + https_proxy=${DAOS_HTTPS_PROXY} \ + HTTPS_PROXY=${DAOS_HTTPS_PROXY} \ + no_proxy=${DAOS_NO_PROXY} \ + NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ - echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment +RUN set -e; \ + if [ -n "$DAOS_HTTP_PROXY" ]; then \ + echo "http_proxy=$DAOS_HTTP_PROXY" >> /etc/environment; \ + echo "HTTP_PROXY=$DAOS_HTTP_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_HTTPS_PROXY" ]; then \ + echo "https_proxy=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + echo "HTTPS_PROXY=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_NO_PROXY" ]; then \ + echo "no_proxy=$DAOS_NO_PROXY" >> /etc/environment; \ + echo "NO_PROXY=$DAOS_NO_PROXY" >> /etc/environment; \ + fi # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-el8.sh /tmp/install.sh diff --git a/utils/docker/Dockerfile.el.9 b/utils/docker/Dockerfile.el.9 index 7af068e9251..0cd785853b3 100644 --- a/utils/docker/Dockerfile.el.9 +++ b/utils/docker/Dockerfile.el.9 @@ -28,19 +28,26 @@ ARG DAOS_HTTP_PROXY ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment -ENV http_proxy=${DAOS_HTTP_PROXY} -ENV HTTP_PROXY=${DAOS_HTTP_PROXY} -ENV https_proxy=${DAOS_HTTPS_PROXY} -ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} -ENV no_proxy=${DAOS_NO_PROXY} -ENV NO_PROXY=${DAOS_NO_PROXY} +ENV http_proxy=${DAOS_HTTP_PROXY} \ + HTTP_PROXY=${DAOS_HTTP_PROXY} \ + https_proxy=${DAOS_HTTPS_PROXY} \ + HTTPS_PROXY=${DAOS_HTTPS_PROXY} \ + no_proxy=${DAOS_NO_PROXY} \ + NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ - echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment +RUN set -e; \ + if [ -n "$DAOS_HTTP_PROXY" ]; then \ + echo "http_proxy=$DAOS_HTTP_PROXY" >> /etc/environment; \ + echo "HTTP_PROXY=$DAOS_HTTP_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_HTTPS_PROXY" ]; then \ + echo "https_proxy=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + echo "HTTPS_PROXY=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_NO_PROXY" ]; then \ + echo "no_proxy=$DAOS_NO_PROXY" >> /etc/environment; \ + echo "NO_PROXY=$DAOS_NO_PROXY" >> /etc/environment; \ + fi # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-el9.sh /tmp/install.sh diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index fc3e1714d31..8e527bd2413 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -28,17 +28,26 @@ ARG DAOS_HTTP_PROXY ARG DAOS_HTTPS_PROXY ARG DAOS_NO_PROXY # Propagate into the build environment -ENV https_proxy=${DAOS_HTTPS_PROXY} -ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} -ENV no_proxy=${DAOS_NO_PROXY} -ENV NO_PROXY=${DAOS_NO_PROXY} +ENV http_proxy=${DAOS_HTTP_PROXY} \ + HTTP_PROXY=${DAOS_HTTP_PROXY} \ + https_proxy=${DAOS_HTTPS_PROXY} \ + HTTPS_PROXY=${DAOS_HTTPS_PROXY} \ + no_proxy=${DAOS_NO_PROXY} \ + NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ - echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment +RUN set -e; \ + if [ -n "$DAOS_HTTP_PROXY" ]; then \ + echo "http_proxy=$DAOS_HTTP_PROXY" >> /etc/environment; \ + echo "HTTP_PROXY=$DAOS_HTTP_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_HTTPS_PROXY" ]; then \ + echo "https_proxy=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + echo "HTTPS_PROXY=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_NO_PROXY" ]; then \ + echo "no_proxy=$DAOS_NO_PROXY" >> /etc/environment; \ + echo "NO_PROXY=$DAOS_NO_PROXY" >> /etc/environment; \ + fi # script to install OS updates basic tools and daos dependencies COPY ./utils/scripts/install-leap15.sh /tmp/install.sh diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index bc92d8078f4..bd5c7be7d48 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -28,19 +28,26 @@ ARG DAOS_NO_PROXY ARG DAOS_HTTP_PROXY ARG DAOS_HTTPS_PROXY # Propagate into the build environment -ENV http_proxy=${DAOS_HTTP_PROXY} -ENV HTTP_PROXY=${DAOS_HTTP_PROXY} -ENV https_proxy=${DAOS_HTTPS_PROXY} -ENV HTTPS_PROXY=${DAOS_HTTPS_PROXY} -ENV no_proxy=${DAOS_NO_PROXY} -ENV NO_PROXY=${DAOS_NO_PROXY} +ENV http_proxy=${DAOS_HTTP_PROXY} \ + HTTP_PROXY=${DAOS_HTTP_PROXY} \ + https_proxy=${DAOS_HTTPS_PROXY} \ + HTTPS_PROXY=${DAOS_HTTPS_PROXY} \ + no_proxy=${DAOS_NO_PROXY} \ + NO_PROXY=${DAOS_NO_PROXY} # Persist into /etc/environment for use by shells and services -RUN echo "http_proxy=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "HTTP_PROXY=${DAOS_HTTP_PROXY}" >> /etc/environment && \ - echo "https_proxy=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "HTTPS_PROXY=${DAOS_HTTPS_PROXY}" >> /etc/environment && \ - echo "no_proxy=${DAOS_NO_PROXY}" >> /etc/environment && \ - echo "NO_PROXY=${DAOS_NO_PROXY}" >> /etc/environment +RUN set -e; \ + if [ -n "$DAOS_HTTP_PROXY" ]; then \ + echo "http_proxy=$DAOS_HTTP_PROXY" >> /etc/environment; \ + echo "HTTP_PROXY=$DAOS_HTTP_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_HTTPS_PROXY" ]; then \ + echo "https_proxy=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + echo "HTTPS_PROXY=$DAOS_HTTPS_PROXY" >> /etc/environment; \ + fi; \ + if [ -n "$DAOS_NO_PROXY" ]; then \ + echo "no_proxy=$DAOS_NO_PROXY" >> /etc/environment; \ + echo "NO_PROXY=$DAOS_NO_PROXY" >> /etc/environment; \ + fi # script to setup local repo if available and install packages COPY ./utils/scripts/helpers/repo-helper-ubuntu.sh /tmp/repo-helper.sh