Set env variables when running kamal app exec

Allow additional env variable to be set when running `kamal app exec`.
Works for both new and existing containers.
This commit is contained in:
Donal McBreen
2024-04-01 15:01:32 +01:00
parent 2562853ae3
commit 8a6a51977f
3 changed files with 32 additions and 16 deletions

View File

@@ -1,27 +1,29 @@
module Kamal::Commands::App::Execution
def execute_in_existing_container(*command, interactive: false)
def execute_in_existing_container(*command, interactive: false, env:)
docker :exec,
("-it" if interactive),
*argumentize("--env", env),
container_name,
*command
end
def execute_in_new_container(*command, interactive: false)
def execute_in_new_container(*command, interactive: false, env:)
docker :run,
("-it" if interactive),
"--rm",
*role&.env_args,
*argumentize("--env", env),
*config.volume_args,
*role&.option_args,
config.absolute_image,
*command
end
def execute_in_existing_container_over_ssh(*command, host:)
run_over_ssh execute_in_existing_container(*command, interactive: true), host: host
def execute_in_existing_container_over_ssh(*command, host:, env:)
run_over_ssh execute_in_existing_container(*command, interactive: true, env: env), host: host
end
def execute_in_new_container_over_ssh(*command, host:)
run_over_ssh execute_in_new_container(*command, interactive: true), host: host
def execute_in_new_container_over_ssh(*command, host:, env:)
run_over_ssh execute_in_new_container(*command, interactive: true, env: env), host: host
end
end