From 8249bcf0d14f210f5dfa3230cdbd63eb04a3e2ee Mon Sep 17 00:00:00 2001 From: Jeremias Weihmann <49484956+www84@users.noreply.github.com> Date: Wed, 25 Dec 2024 18:33:55 +0100 Subject: [PATCH] Add envs option to docker.compose.run() (#664) --- python_on_whales/components/compose/cli_wrapper.py | 5 ++++- tests/python_on_whales/components/test_compose.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/python_on_whales/components/compose/cli_wrapper.py b/python_on_whales/components/compose/cli_wrapper.py index 857395ff..c5c90128 100644 --- a/python_on_whales/components/compose/cli_wrapper.py +++ b/python_on_whales/components/compose/cli_wrapper.py @@ -665,7 +665,7 @@ def run( build: bool = False, detach: bool = False, entrypoint: Optional[str] = None, - # envs: Dict[str, str] = {}, + envs: Dict[str, str] = {}, labels: Dict[str, str] = {}, name: Optional[str] = None, tty: bool = True, @@ -695,6 +695,7 @@ def run( detach: if `True`, returns immediately with the Container. If `False`, returns the command stdout as string. entrypoint: The entrypoint to execute. + envs: A dictionary of environment variables to set in the container. labels: Add or override labels name: Assign a name to the container. dependencies: Also start linked services. @@ -735,6 +736,8 @@ def run( full_cmd.add_flag("--build", build) full_cmd.add_flag("--detach", detach) full_cmd.add_simple_arg("--entrypoint", entrypoint) + for key, value in envs.items(): + full_cmd.add_simple_arg("--env", f"{key}={value}") full_cmd.add_simple_arg("--name", name) full_cmd.add_flag("--no-TTY", not tty) full_cmd.add_flag("--no-deps", not dependencies) diff --git a/tests/python_on_whales/components/test_compose.py b/tests/python_on_whales/components/test_compose.py index cf2cb485..b09914b0 100644 --- a/tests/python_on_whales/components/test_compose.py +++ b/tests/python_on_whales/components/test_compose.py @@ -765,6 +765,18 @@ def test_compose_run_entrypoint(): assert result == "cmd-is-argument-for-echo" +def test_compose_run_envs(): + result = docker.compose.run( + "dodo", + ["-c", "echo $VAR1 $VAR2"], + envs={"VAR1": "hello", "VAR2": "world"}, + remove=True, + tty=False, + ) + + assert result == "hello world" + + def test_compose_run_volume(): with tempfile.NamedTemporaryFile() as fst, tempfile.NamedTemporaryFile() as snd: fst.write(b"Hello ")