mirror of
https://github.com/docker/compose.git
synced 2026-08-31 06:49:15 +00:00
Run classic builder with BuildConfig, not buildx.Options
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
88b0d17ff8
commit
6c1f06e420
5 changed files with 114 additions and 135 deletions
|
|
@ -23,6 +23,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/compose-spec/compose-go/types"
|
||||
"github.com/docker/compose/v2/pkg/utils"
|
||||
)
|
||||
|
||||
// Service manages a compose project
|
||||
|
|
@ -107,6 +108,38 @@ type BuildOptions struct {
|
|||
SSHs []types.SSHKey
|
||||
}
|
||||
|
||||
// Apply mutates project according to build options
|
||||
func (o BuildOptions) Apply(project *types.Project) error {
|
||||
platform := project.Environment["DOCKER_DEFAULT_PLATFORM"]
|
||||
for i, service := range project.Services {
|
||||
if service.Image == "" && service.Build == nil {
|
||||
return fmt.Errorf("invalid service %q. Must specify either image or build", service.Name)
|
||||
}
|
||||
|
||||
if service.Build == nil {
|
||||
continue
|
||||
}
|
||||
service.Image = GetImageNameOrDefault(service, project.Name)
|
||||
if platform != "" {
|
||||
if len(service.Build.Platforms) > 0 && !utils.StringContains(service.Build.Platforms, platform) {
|
||||
return fmt.Errorf("service %q build.platforms does not support value set by DOCKER_DEFAULT_PLATFORM: %s", service.Name, platform)
|
||||
}
|
||||
service.Platform = platform
|
||||
}
|
||||
if service.Platform != "" {
|
||||
if len(service.Build.Platforms) > 0 && !utils.StringContains(service.Build.Platforms, service.Platform) {
|
||||
return fmt.Errorf("service %q build configuration does not support platform: %s", service.Name, service.Platform)
|
||||
}
|
||||
}
|
||||
|
||||
service.Build.Pull = service.Build.Pull || o.Pull
|
||||
service.Build.NoCache = service.Build.NoCache || o.NoCache
|
||||
|
||||
project.Services[i] = service
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateOptions group options of the Create API
|
||||
type CreateOptions struct {
|
||||
// Services defines the services user interacts with
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue