From b40f719fa134890d54436a4b3c4ad588c083fcee Mon Sep 17 00:00:00 2001 From: psihachina Date: Wed, 14 Sep 2022 20:57:05 +0300 Subject: [PATCH 1/2] add amd64 platform by default --- internal/docker/builder.go | 5 ++++- internal/docker/registry.go | 5 ++++- internal/manager/ecs/ecs.go | 12 +++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/internal/docker/builder.go b/internal/docker/builder.go index fc2d994a..3cae5970 100644 --- a/internal/docker/builder.go +++ b/internal/docker/builder.go @@ -24,14 +24,16 @@ type Builder struct { Tags []string Dockerfile string CacheFrom []string + Platform string } -func NewBuilder(buildArgs map[string]*string, tags []string, dockerfile string, cacheFrom []string) Builder { +func NewBuilder(buildArgs map[string]*string, tags []string, dockerfile string, cacheFrom []string, platform string) Builder { return Builder{ BuildArgs: buildArgs, Tags: tags, Dockerfile: dockerfile, CacheFrom: cacheFrom, + Platform: platform, } } @@ -113,6 +115,7 @@ func (b *Builder) buildWithDocker( Dockerfile: relDockerfile, Tags: tags, BuildArgs: buildArgs, + Platform: b.Platform, } resp, err := cli.ImageBuild(context.Background(), buildCtx, buildOpts) diff --git a/internal/docker/registry.go b/internal/docker/registry.go index 16eb565f..b3d9fb35 100644 --- a/internal/docker/registry.go +++ b/internal/docker/registry.go @@ -14,12 +14,14 @@ import ( type Registry struct { Registry string Token string + Platform string } -func NewRegistry(registry, token string) Registry { +func NewRegistry(registry, token, platform string) Registry { return Registry{ Registry: registry, Token: token, + Platform: platform, } } @@ -45,6 +47,7 @@ func (r *Registry) Push(ctx context.Context, w io.Writer, image string, tags []s resp, err := cli.ImagePush(ctx, image+":"+tags[0], types.ImagePushOptions{ RegistryAuth: r.Token, All: true, + Platform: r.Platform, }) if err != nil { return fmt.Errorf("unable to push image: %s", err) diff --git a/internal/manager/ecs/ecs.go b/internal/manager/ecs/ecs.go index beadb76e..64787932 100644 --- a/internal/manager/ecs/ecs.go +++ b/internal/manager/ecs/ecs.go @@ -231,8 +231,12 @@ func (e *Manager) Push(ui terminal.UI) error { tagLatest := fmt.Sprintf("%s-latest", e.Project.Env) imageUri := fmt.Sprintf("%s/%s", e.App.DockerRegistry, image) + platform := "linux/amd64" + if e.Project.PreferRuntime == "docker-arm64" { + platform = "linux/arm64" + } - r := docker.NewRegistry(*repository.RepositoryUri, token) + r := docker.NewRegistry(*repository.RepositoryUri, token, platform) err = r.Push(context.Background(), s.TermOutput(), imageUri, []string{e.Project.Tag, tagLatest}) if err != nil { @@ -277,11 +281,17 @@ func (e *Manager) Build(ui terminal.UI) error { cache := []string{fmt.Sprintf("%s:%s", imageUri, fmt.Sprintf("%s-latest", e.Project.Env))} + platform := "linux/amd64" + if e.Project.PreferRuntime == "docker-arm64" { + platform = "linux/arm64" + } + b := docker.NewBuilder( buildArgs, tags, dockerfile, cache, + platform, ) err = b.Build(ui, s, e.Project.RootDir) From 9e87c2f6384b37b21b21e49363b1bedc3d47d52d Mon Sep 17 00:00:00 2001 From: psihachina Date: Fri, 16 Sep 2022 09:10:39 +0300 Subject: [PATCH 2/2] updated help --- internal/commands/build.go | 3 +++ internal/commands/ize.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/commands/build.go b/internal/commands/build.go index 41e7d543..9cf83645 100644 --- a/internal/commands/build.go +++ b/internal/commands/build.go @@ -34,6 +34,9 @@ var buildExample = templates.Examples(` # Build app with explicitly specified config file passed via environment variable. export IZE_CONFIG_FILE=/path/to/config ize build + + # Build app for arm64 + ize build --prefer-runtime docker-arm64 `) func NewBuildFlags(project *config.Project) *BuildOptions { diff --git a/internal/commands/ize.go b/internal/commands/ize.go index f562df4c..619b0631 100644 --- a/internal/commands/ize.go +++ b/internal/commands/ize.go @@ -70,7 +70,7 @@ func newRootCmd(project *config.Project) *cobra.Command { cmd.PersistentFlags().StringP("aws-region", "r", "", "(required) set AWS region (overrides value in ize.toml and IZE_AWS_REGION / AWS_REGION if any of them are set)") cmd.PersistentFlags().StringP("namespace", "n", "", "(required) set namespace (overrides value in ize.toml and IZE_NAMESPACE / NAMESPACE if any of them are set)") cmd.PersistentFlags().String("terraform-version", "", "set terraform-version") - cmd.PersistentFlags().String("prefer-runtime", "native", "set prefer runtime (native or docker)") + cmd.PersistentFlags().String("prefer-runtime", "native", "set prefer runtime (native, docker or docker-arm64)") cmd.Flags().StringP("tag", "t", "", "set tag") cmd.AddCommand(