don't create from run command during dependencies creation process

Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
This commit is contained in:
Guillaume Lours 2025-06-23 22:03:35 +02:00
parent c97e40e2b8
commit 149b882ebf
2 changed files with 25 additions and 7 deletions

View File

@ -176,18 +176,22 @@ func applyRunOptions(project *types.Project, service *types.ServiceConfig, opts
} }
func (s *composeService) startDependencies(ctx context.Context, project *types.Project, options api.RunOptions) error { func (s *composeService) startDependencies(ctx context.Context, project *types.Project, options api.RunOptions) error {
var dependencies []string dependencies := types.Services{}
for name := range project.Services { var requestedService types.ServiceConfig
for name, service := range project.Services {
if name != options.Service { if name != options.Service {
dependencies = append(dependencies, name) dependencies[name] = service
} else {
requestedService = service
} }
} }
project, err := project.WithSelectedServices(dependencies) if len(dependencies) > 0 {
if err != nil { project.Services = dependencies
return err project.DisabledServices[options.Service] = requestedService
} }
err = s.Create(ctx, project, api.CreateOptions{
err := s.Create(ctx, project, api.CreateOptions{
Build: options.Build, Build: options.Build,
IgnoreOrphans: options.IgnoreOrphans, IgnoreOrphans: options.IgnoreOrphans,
RemoveOrphans: options.RemoveOrphans, RemoveOrphans: options.RemoveOrphans,

View File

@ -196,4 +196,18 @@ func TestLocalComposeRun(t *testing.T) {
"front", "env") "front", "env")
res.Assert(t, icmd.Expected{Out: "FOO=BAR"}) res.Assert(t, icmd.Expected{Out: "FOO=BAR"})
}) })
t.Run("compose run -rm with stop signal", func(t *testing.T) {
projectName := "run-test"
res := c.RunDockerComposeCmd(t, "--project-name", projectName, "-f", "./fixtures/ps-test/compose.yaml", "run", "--rm", "-d", "nginx")
res.Assert(t, icmd.Success)
res = c.RunDockerCmd(t, "ps", "--quiet", "--filter", "name=run-test-nginx")
containerID := strings.TrimSpace(res.Stdout())
res = c.RunDockerCmd(t, "stop", containerID)
res.Assert(t, icmd.Success)
res = c.RunDockerCmd(t, "ps", "--all", "--filter", "name=run-test-nginx", "--format", "'{{.Names}}'")
assert.Assert(t, !strings.Contains(res.Stdout(), "run-test-nginx"), res.Stdout())
})
} }