Skip to content

Commit f68e33b

Browse files
committed
Compose can't create a tar with adequate uid:gid ownership
as we can't get container UID/GID as int by ContainerInspect revert #13288 Signed-off-by: Nicolas De Loof <[email protected]>
1 parent be8c7e6 commit f68e33b

File tree

3 files changed

+0
-71
lines changed

3 files changed

+0
-71
lines changed

pkg/compose/secrets.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"context"
2323
"fmt"
2424
"strconv"
25-
"strings"
2625
"time"
2726

2827
"github.com/compose-spec/compose-go/v2/types"
@@ -46,7 +45,6 @@ func (s *composeService) injectConfigs(ctx context.Context, project *types.Proje
4645

4746
func (s *composeService) injectFileReferences(ctx context.Context, project *types.Project, service types.ServiceConfig, id string, mountType mountType) error {
4847
mounts, sources := s.getFilesAndMap(project, service, mountType)
49-
var ctrConfig *container.Config
5048

5149
for _, mount := range mounts {
5250
content, err := s.resolveFileContent(project, sources[mount.Source], mountType)
@@ -63,11 +61,6 @@ func (s *composeService) injectFileReferences(ctx context.Context, project *type
6361

6462
s.setDefaultTarget(&mount, mountType)
6563

66-
ctrConfig, err = s.setFileOwnership(ctx, id, &mount, ctrConfig)
67-
if err != nil {
68-
return err
69-
}
70-
7164
if err := s.copyFileToContainer(ctx, id, content, mount); err != nil {
7265
return err
7366
}
@@ -129,30 +122,6 @@ func (s *composeService) setDefaultTarget(file *types.FileReferenceConfig, mount
129122
}
130123
}
131124

132-
func (s *composeService) setFileOwnership(ctx context.Context, id string, file *types.FileReferenceConfig, ctrConfig *container.Config) (*container.Config, error) {
133-
if file.UID != "" || file.GID != "" {
134-
return ctrConfig, nil
135-
}
136-
137-
if ctrConfig == nil {
138-
ctr, err := s.apiClient().ContainerInspect(ctx, id)
139-
if err != nil {
140-
return nil, err
141-
}
142-
ctrConfig = ctr.Config
143-
}
144-
145-
parts := strings.Split(ctrConfig.User, ":")
146-
if len(parts) > 0 {
147-
file.UID = parts[0]
148-
}
149-
if len(parts) > 1 {
150-
file.GID = parts[1]
151-
}
152-
153-
return ctrConfig, nil
154-
}
155-
156125
func (s *composeService) copyFileToContainer(ctx context.Context, id, content string, file types.FileReferenceConfig) error {
157126
b, err := createTar(content, file)
158127
if err != nil {

pkg/e2e/fixtures/env-secret/compose.yaml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,6 @@ services:
1414
mode: 0440
1515
command: cat /run/secrets/bar
1616

17-
bar:
18-
image: alpine
19-
user: "1005"
20-
secrets:
21-
- source: secret
22-
target: bar
23-
command: cat /run/secrets/bar
24-
25-
zot:
26-
image: alpine
27-
user: "1005:1005"
28-
secrets:
29-
- source: secret
30-
target: bar
31-
command: cat /run/secrets/bar
32-
33-
3417
secrets:
3518
secret:
3619
environment: SECRET

pkg/e2e/secrets_test.go

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package e2e
1818

1919
import (
20-
"strings"
2120
"testing"
2221

2322
"gotest.tools/v3/icmd"
@@ -41,28 +40,6 @@ func TestSecretFromEnv(t *testing.T) {
4140
})
4241
res.Assert(t, icmd.Expected{Out: "-r--r----- 1 1005 1005"})
4342
})
44-
t.Run("secret uid from user", func(t *testing.T) {
45-
res := c.RunDockerCmd(t, "version", "--format", "{{ .Server.Version }}")
46-
if strings.HasPrefix(res.Stdout(), "27.") {
47-
t.Skip("USER uid:gid is not supported")
48-
}
49-
res = icmd.RunCmd(c.NewDockerComposeCmd(t, "-f", "./fixtures/env-secret/compose.yaml", "run", "bar", "ls", "-al", "/var/run/secrets/bar"),
50-
func(cmd *icmd.Cmd) {
51-
cmd.Env = append(cmd.Env, "SECRET=BAR")
52-
})
53-
res.Assert(t, icmd.Expected{Out: "-r--r--r-- 1 1005 root"})
54-
})
55-
t.Run("secret uid:gid from user", func(t *testing.T) {
56-
res := c.RunDockerCmd(t, "version", "--format", "{{ .Server.Version }}")
57-
if strings.HasPrefix(res.Stdout(), "27.") {
58-
t.Skip("USER uid:gid is not supported")
59-
}
60-
res = icmd.RunCmd(c.NewDockerComposeCmd(t, "-f", "./fixtures/env-secret/compose.yaml", "run", "zot", "ls", "-al", "/var/run/secrets/bar"),
61-
func(cmd *icmd.Cmd) {
62-
cmd.Env = append(cmd.Env, "SECRET=BAR")
63-
})
64-
res.Assert(t, icmd.Expected{Out: "-r--r--r-- 1 1005 1005"})
65-
})
6643
}
6744

6845
func TestSecretFromInclude(t *testing.T) {

0 commit comments

Comments
 (0)