浏览代码

Merge pull request #9854 from glours/fix-docker-default-platform--without-build-platform

keep the platform defined via DOCKER_DEFAULT_PLATFORM during build if no build platforms provided
Guillaume Lours 3 年之前
父节点
当前提交
db88241698
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      pkg/compose/build.go

+ 5 - 2
pkg/compose/build.go

@@ -368,7 +368,10 @@ func addPlatforms(project *types.Project, service types.ServiceConfig) ([]specs.
 		}
 		// User defined a service platform and no build platforms, so we should keep the one define on the service level
 		p, err := platforms.Parse(service.Platform)
-		return append(plats, p), err
+		if !utils.Contains(plats, p) {
+			plats = append(plats, p)
+		}
+		return plats, err
 	}
 
 	for _, buildPlatform := range service.Build.Platforms {
@@ -400,7 +403,7 @@ func getImageBuildLabels(project *types.Project, service types.ServiceConfig) ty
 func useDockerDefaultPlatform(project *types.Project, platformList types.StringList) ([]specs.Platform, error) {
 	var plats []specs.Platform
 	if platform, ok := project.Environment["DOCKER_DEFAULT_PLATFORM"]; ok {
-		if !utils.StringContains(platformList, platform) {
+		if len(platformList) > 0 && !utils.StringContains(platformList, platform) {
 			return nil, fmt.Errorf("the DOCKER_DEFAULT_PLATFORM value should be part of the service.build.platforms: %q", platform)
 		}
 		p, err := platforms.Parse(platform)