From b3f68289df646a82c9b87d866244510ff1d2866a Mon Sep 17 00:00:00 2001 From: Louis Blin <45168934+lbpdt@users.noreply.github.com> Date: Thu, 25 Mar 2021 16:38:37 +0000 Subject: dockerTools.streamLayeredImage: resolve duplicate env vars For images running on Kubernetes, there is no guarantee on how duplicate environment variables in the image config will be handled. This seems to be different from Docker, where the last environment variable value is consistently selected. The current code for `streamLayeredImage` was exploiting that assumption to easily propagate environment variables from the base image, leaving duplicates unchecked. It should rather resolve these duplicates to ensure consistent behavior on Docker and Kubernetes. --- pkgs/build-support/docker/stream_layered_image.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'pkgs/build-support') diff --git a/pkgs/build-support/docker/stream_layered_image.py b/pkgs/build-support/docker/stream_layered_image.py index 3e5781ba1c806..d7c63eb43a78f 100644 --- a/pkgs/build-support/docker/stream_layered_image.py +++ b/pkgs/build-support/docker/stream_layered_image.py @@ -202,7 +202,9 @@ def overlay_base_config(from_image, final_config): # Preserve environment from base image final_env = base_config.get("Env", []) + final_config.get("Env", []) if final_env: - final_config["Env"] = final_env + # Resolve duplicates (last one wins) and format back as list + resolved_env = {entry.split("=", 1)[0]: entry for entry in final_env} + final_config["Env"] = list(resolved_env.values()) return final_config -- cgit 1.4.1