define exec env by merging service env with command line --env
@@ -49,9 +49,18 @@ func (s *composeService) Exec(ctx context.Context, project *types.Project, opts
}
container := containers[0]
+ var env []string
+ projectEnv := types.NewMappingWithEquals(opts.Environment).Resolve(func(s string) (string, bool) {
+ v, ok := project.Environment[s]
+ return v, ok
+ })
+ for k, v := range service.Environment.OverrideBy(projectEnv) {
+ env = append(env, fmt.Sprintf("%s=%s", k, *v))
+ }
+
exec, err := s.apiClient.ContainerExecCreate(ctx, container.ID, apitypes.ExecConfig{
Cmd: opts.Command,
- Env: opts.Environment,
+ Env: env,
User: opts.User,
Privileged: opts.Privileged,
Tty: opts.Tty,
