Skip to content

Commit 02ffe2a

Browse files
ndeloofglours
authored andcommitted
prefer application container vs one-off running exec without index
Signed-off-by: Nicolas De Loof <[email protected]>
1 parent f48131f commit 02ffe2a

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

pkg/compose/containers.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func (s *composeService) getSpecifiedContainer(ctx context.Context, projectName
100100
IsOneOffLabelTrueX := containers[i].Labels[api.OneoffLabel] == "True"
101101
IsOneOffLabelTrueY := containers[j].Labels[api.OneoffLabel] == "True"
102102

103-
if numberLabelX == numberLabelY {
103+
if IsOneOffLabelTrueX || IsOneOffLabelTrueY {
104104
return !IsOneOffLabelTrueX && IsOneOffLabelTrueY
105105
}
106106

pkg/e2e/exec_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
Copyright 2023 Docker Compose CLI authors
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package e2e
18+
19+
import (
20+
"testing"
21+
22+
"gotest.tools/v3/icmd"
23+
)
24+
25+
func TestExec(t *testing.T) {
26+
const projectName = "e2e-exec"
27+
c := NewParallelCLI(t)
28+
29+
cleanup := func() {
30+
c.RunDockerComposeCmd(t, "--project-name", projectName, "down", "--timeout=0", "--remove-orphans")
31+
}
32+
t.Cleanup(cleanup)
33+
cleanup()
34+
35+
c.RunDockerComposeCmd(t, "-f", "./fixtures/exec/compose.yaml", "--project-name", projectName, "run", "-d", "test", "cat")
36+
37+
res := c.RunDockerComposeCmdNoCheck(t, "--project-name", projectName, "exec", "--index=1", "test", "ps")
38+
res.Assert(t, icmd.Expected{Err: "service \"test\" is not running container #1", ExitCode: 1})
39+
40+
res = c.RunDockerComposeCmd(t, "--project-name", projectName, "exec", "test", "ps")
41+
res.Assert(t, icmd.Expected{Out: "cat"}) // one-off container was selected
42+
43+
c.RunDockerComposeCmd(t, "-f", "./fixtures/exec/compose.yaml", "--project-name", projectName, "up", "-d")
44+
45+
res = c.RunDockerComposeCmd(t, "--project-name", projectName, "exec", "test", "ps")
46+
res.Assert(t, icmd.Expected{Out: "tail"}) // service container was selected
47+
}

pkg/e2e/fixtures/exec/compose.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
services:
2+
test:
3+
image: alpine
4+
command: tail -f /dev/null

0 commit comments

Comments
 (0)