@@ -2455,6 +2455,18 @@ async def compose_run(compose, args):
24552455 )
24562456 await compose .commands ["build" ](compose , build_args )
24572457
2458+ compose_run_update_container_from_args (compose , cnt , args )
2459+ # run podman
2460+ podman_args = await container_to_args (compose , cnt , args .detach )
2461+ if not args .detach :
2462+ podman_args .insert (1 , "-i" )
2463+ if args .rm :
2464+ podman_args .insert (1 , "--rm" )
2465+ p = await compose .podman .run ([], "run" , podman_args )
2466+ sys .exit (p )
2467+
2468+
2469+ def compose_run_update_container_from_args (compose , cnt , args ):
24582470 # adjust one-off container options
24592471 name0 = "{}_{}_tmp{}" .format (compose .project_name , args .service , random .randrange (0 , 65536 ))
24602472 cnt ["name" ] = args .name or name0
@@ -2466,7 +2478,7 @@ async def compose_run(compose, args):
24662478 cnt ["working_dir" ] = args .workdir
24672479 env = dict (cnt .get ("environment" , {}))
24682480 if args .env :
2469- additional_env_vars = dict (map (lambda each : each .split ("=" ), args .env ))
2481+ additional_env_vars = dict (map (lambda each : each .split ("=" , maxsplit = 1 ), args .env ))
24702482 env .update (additional_env_vars )
24712483 cnt ["environment" ] = env
24722484 if not args .service_ports :
@@ -2486,14 +2498,6 @@ async def compose_run(compose, args):
24862498 # can't restart and --rm
24872499 if args .rm and "restart" in cnt :
24882500 del cnt ["restart" ]
2489- # run podman
2490- podman_args = await container_to_args (compose , cnt , args .detach )
2491- if not args .detach :
2492- podman_args .insert (1 , "-i" )
2493- if args .rm :
2494- podman_args .insert (1 , "--rm" )
2495- p = await compose .podman .run ([], "run" , podman_args )
2496- sys .exit (p )
24972501
24982502
24992503@cmd_run (podman_compose , "exec" , "execute a command in a running container" )
@@ -2502,6 +2506,12 @@ async def compose_exec(compose, args):
25022506 container_names = compose .container_names_by_service [args .service ]
25032507 container_name = container_names [args .index - 1 ]
25042508 cnt = compose .container_by_name [container_name ]
2509+ podman_args = compose_exec_args (cnt , container_name , args )
2510+ p = await compose .podman .run ([], "exec" , podman_args )
2511+ sys .exit (p )
2512+
2513+
2514+ def compose_exec_args (cnt , container_name , args ):
25052515 podman_args = ["--interactive" ]
25062516 if args .privileged :
25072517 podman_args += ["--privileged" ]
@@ -2514,16 +2524,15 @@ async def compose_exec(compose, args):
25142524 env = dict (cnt .get ("environment" , {}))
25152525 if args .env :
25162526 additional_env_vars = dict (
2517- map (lambda each : each .split ("=" ) if "=" in each else (each , None ), args .env )
2527+ map (lambda each : each .split ("=" , maxsplit = 1 ) if "=" in each else (each , None ), args .env )
25182528 )
25192529 env .update (additional_env_vars )
25202530 for name , value in env .items ():
25212531 podman_args += ["--env" , f"{ name } " if value is None else f"{ name } ={ value } " ]
25222532 podman_args += [container_name ]
25232533 if args .cnt_command is not None and len (args .cnt_command ) > 0 :
25242534 podman_args += args .cnt_command
2525- p = await compose .podman .run ([], "exec" , podman_args )
2526- sys .exit (p )
2535+ return podman_args
25272536
25282537
25292538async def transfer_service_status (compose , args , action ):
0 commit comments