diff --git a/Changelog.md b/Changelog.md index 1274238..88bb256 100644 --- a/Changelog.md +++ b/Changelog.md @@ -10,6 +10,7 @@ If you intended on adding a newline to the value, ensure you have *two* trailing newlines: echo -e "my_value\n" > /etc/container_environment/FOO + * It was not possible to use `docker run -e` to override environment variables defined in /etc/container_environment. This has been fixed (GH-52). Thanks to Stuart Campbell for reporting this bug. ## 0.9.9 (release date: 2014-03-25) diff --git a/image/my_init b/image/my_init index 983b65c..4a97f8e 100755 --- a/image/my_init +++ b/image/my_init @@ -54,7 +54,7 @@ def is_exe(path): except OSError: return False -def import_envvars(clear_existing_environment = True): +def import_envvars(clear_existing_environment = True, override_existing_environment = True): new_env = {} for envfile in listdir("/etc/container_environment"): name = os.path.basename(envfile) @@ -67,7 +67,8 @@ def import_envvars(clear_existing_environment = True): if clear_existing_environment: os.environ.clear() for name, value in new_env.items(): - os.environ[name] = value + if override_existing_environment or not name in os.environ: + os.environ[name] = value def export_envvars(to_dir = True): shell_dump = "" @@ -227,7 +228,7 @@ def install_insecure_key(): run_command_killable("/usr/sbin/enable_insecure_key") def main(args): - import_envvars(False) + import_envvars(False, False) export_envvars() if args.enable_insecure_key: