瀏覽代碼

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

Signed-off-by: Nicolas De Loof <[email protected]>
Nicolas De Loof 10 月之前
父節點
當前提交
5f7c9a2b4b
共有 1 個文件被更改,包括 10 次插入2 次删除
  1. 10 2
      pkg/compose/secrets.go

+ 10 - 2
pkg/compose/secrets.go

@@ -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
 		}