1
0
mirror of https://github.com/docker/compose.git synced 2025-04-08 17:05:13 +02:00

report error using non-file secret|config with read-only service

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
Nicolas De Loof 2025-02-06 09:22:01 +01:00 committed by Guillaume Lours
parent fd0c23a1c9
commit 5f7c9a2b4b

@ -35,6 +35,10 @@ func (s *composeService) injectSecrets(ctx context.Context, project *types.Proje
continue
}
if service.ReadOnly {
return fmt.Errorf("cannot create secret %q in read-only service %s: `file` is the sole supported option", file.Name, service.Name)
}
if config.Target == "" {
config.Target = "/run/secrets/" + config.Source
} else if !isAbsTarget(config.Target) {
@ -43,7 +47,7 @@ func (s *composeService) injectSecrets(ctx context.Context, project *types.Proje
env, ok := project.Environment[file.Environment]
if !ok {
return fmt.Errorf("environment variable %q required by file %q is not set", file.Environment, file.Name)
return fmt.Errorf("environment variable %q required by secret %q is not set", file.Environment, file.Name)
}
b, err := createTar(env, types.FileReferenceConfig(config))
if err != nil {
@ -67,7 +71,7 @@ func (s *composeService) injectConfigs(ctx context.Context, project *types.Proje
if file.Environment != "" {
env, ok := project.Environment[file.Environment]
if !ok {
return fmt.Errorf("environment variable %q required by file %q is not set", file.Environment, file.Name)
return fmt.Errorf("environment variable %q required by config %q is not set", file.Environment, file.Name)
}
content = env
}
@ -75,6 +79,10 @@ func (s *composeService) injectConfigs(ctx context.Context, project *types.Proje
continue
}
if service.ReadOnly {
return fmt.Errorf("cannot create config %q in read-only service %s: `file` is the sole supported option", file.Name, service.Name)
}
if config.Target == "" {
config.Target = "/" + config.Source
}