Skip to content

Commit bf26d05

Browse files
committed
Fix orphans warning when docker compose run
Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
1 parent c8b708a commit bf26d05

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

cli/cmd/compose/run.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,13 @@ func runRun(ctx context.Context, opts runOptions) error {
6969
return err
7070
}
7171

72-
originalServices := project.Services
7372
_, err = progress.Run(ctx, func(ctx context.Context) (string, error) {
74-
return "", startDependencies(ctx, c, project, opts.Service)
73+
return "", startDependencies(ctx, c, *project, opts.Service)
7574
})
7675
if err != nil {
7776
return err
7877
}
7978

80-
project.Services = originalServices
8179
// start container and attach to container streams
8280
runOpts := compose.RunOptions{
8381
Service: opts.Service,
@@ -90,21 +88,24 @@ func runRun(ctx context.Context, opts runOptions) error {
9088
return c.ComposeService().RunOneOffContainer(ctx, project, runOpts)
9189
}
9290

93-
func startDependencies(ctx context.Context, c *client.Client, project *types.Project, requestedService string) error {
94-
originalServices := project.Services
91+
func startDependencies(ctx context.Context, c *client.Client, project types.Project, requestedServiceName string) error {
9592
dependencies := types.Services{}
96-
for _, service := range originalServices {
97-
if service.Name != requestedService {
93+
var requestedService types.ServiceConfig
94+
for _, service := range project.Services {
95+
if service.Name != requestedServiceName {
9896
dependencies = append(dependencies, service)
97+
} else {
98+
requestedService = service
9999
}
100100
}
101+
101102
project.Services = dependencies
102-
if err := c.ComposeService().Create(ctx, project, compose.CreateOptions{}); err != nil {
103+
project.DisabledServices = append(project.DisabledServices, requestedService)
104+
if err := c.ComposeService().Create(ctx, &project, compose.CreateOptions{}); err != nil {
103105
return err
104106
}
105-
if err := c.ComposeService().Start(ctx, project, compose.StartOptions{}); err != nil {
107+
if err := c.ComposeService().Start(ctx, &project, compose.StartOptions{}); err != nil {
106108
return err
107109
}
108110
return nil
109-
110111
}

local/e2e/compose/compose_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,12 @@ func TestLocalComposeRun(t *testing.T) {
122122
res := c.RunDockerCmd("compose", "-f", "./fixtures/run-test/compose.yml", "run", "back")
123123
lines := Lines(res.Stdout())
124124
assert.Equal(t, lines[len(lines)-1], "Hello there!!", res.Stdout())
125+
assert.Assert(t, !strings.Contains(res.Combined(), "orphan"))
126+
127+
res = c.RunDockerCmd("compose", "-f", "./fixtures/run-test/compose.yml", "run", "back", "echo", "Hello one more time")
128+
lines = Lines(res.Stdout())
129+
assert.Equal(t, lines[len(lines)-1], "Hello one more time", res.Stdout())
130+
assert.Assert(t, !strings.Contains(res.Combined(), "orphan"))
125131
})
126132

127133
t.Run("check run container exited", func(t *testing.T) {
@@ -156,10 +162,8 @@ func TestLocalComposeRun(t *testing.T) {
156162
res := c.RunDockerCmd("compose", "-f", "./fixtures/run-test/compose.yml", "run", "--rm", "back", "/bin/sh", "-c", "echo Hello again")
157163
lines := Lines(res.Stdout())
158164
assert.Equal(t, lines[len(lines)-1], "Hello again", res.Stdout())
159-
})
160165

161-
t.Run("check run container removed", func(t *testing.T) {
162-
res := c.RunDockerCmd("ps", "--all")
166+
res = c.RunDockerCmd("ps", "--all")
163167
assert.Assert(t, strings.Contains(res.Stdout(), "run-test_back"), res.Stdout())
164168
})
165169

0 commit comments

Comments
 (0)