| 235 | } |
| 236 | |
| 237 | func writeComposeFile(layer spec.Descriptor, i int, local string, content []byte) error { |
| 238 | file := "compose.yaml" |
| 239 | if _, ok := layer.Annotations["com.docker.compose.extends"]; ok { |
| 240 | file = layer.Annotations["com.docker.compose.file"] |
| 241 | if err := validatePathInBase(local, file); err != nil { |
| 242 | return err |
| 243 | } |
| 244 | } |
| 245 | f, err := os.OpenFile(filepath.Join(local, file), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0o600) |
| 246 | if err != nil { |
| 247 | return err |
| 248 | } |
| 249 | defer func() { _ = f.Close() }() |
| 250 | if _, ok := layer.Annotations["com.docker.compose.file"]; i > 0 && ok { |
| 251 | _, err := f.Write([]byte("\n---\n")) |
| 252 | if err != nil { |
| 253 | return err |
| 254 | } |
| 255 | } |
| 256 | _, err = f.Write(content) |
| 257 | return err |
| 258 | } |
| 259 | |
| 260 | func writeEnvFile(layer spec.Descriptor, local string, content []byte) error { |
| 261 | envfilePath, ok := layer.Annotations["com.docker.compose.envfile"] |