Skip to content

Commit ff53d2a

Browse files
andreasjanssonbfirsh
authored andcommitted
Re-introduce Mac M1 builds with buildx
Signed-off-by: andreasjansson <[email protected]>
1 parent 47b56dc commit ff53d2a

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

pkg/docker/build.go

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,49 @@ import (
44
"fmt"
55
"os"
66
"os/exec"
7+
"runtime"
78
"strings"
89

10+
"github.com/replicate/cog/pkg/util"
911
"github.com/replicate/cog/pkg/util/console"
1012
)
1113

1214
func Build(dir, dockerfile, imageName string) error {
13-
cmd := exec.Command(
14-
"docker", "build", ".",
15-
"-f", "-",
15+
var args []string
16+
if util.IsM1Mac(runtime.GOOS, runtime.GOARCH) {
17+
args = m1BuildxBuildArgs()
18+
} else {
19+
args = buildKitBuildArgs()
20+
}
21+
args = append(args,
22+
"--file", "-",
1623
"--build-arg", "BUILDKIT_INLINE_CACHE=1",
17-
"-t", imageName,
24+
"--tag", imageName,
25+
".",
1826
)
27+
cmd := exec.Command("docker", args...)
1928
cmd.Dir = dir
2029
cmd.Stdout = os.Stdout
2130
cmd.Stderr = os.Stderr
2231
cmd.Stdin = strings.NewReader(dockerfile)
23-
cmd.Env = append(os.Environ(), "DOCKER_BUILDKIT=1")
2432

2533
console.Debug("$ " + strings.Join(cmd.Args, " "))
2634
return cmd.Run()
2735
}
2836

2937
func BuildAddLabelsToImage(image string, labels map[string]string) error {
3038
dockerfile := "FROM " + image
31-
args := []string{
32-
"build",
33-
"-f", "-",
34-
"-t", image,
39+
var args []string
40+
if util.IsM1Mac(runtime.GOOS, runtime.GOARCH) {
41+
args = m1BuildxBuildArgs()
42+
} else {
43+
args = buildKitBuildArgs()
3544
}
45+
46+
args = append(args,
47+
"--file", "-",
48+
"--tag", image,
49+
)
3650
for k, v := range labels {
3751
// Unlike in Dockerfiles, the value here does not need quoting -- Docker merely
3852
// splits on the first '=' in the argument and the rest is the label value.
@@ -51,3 +65,11 @@ func BuildAddLabelsToImage(image string, labels map[string]string) error {
5165
}
5266
return nil
5367
}
68+
69+
func m1BuildxBuildArgs() []string {
70+
return []string{"buildx", "build", "--platform", "linux/amd64"}
71+
}
72+
73+
func buildKitBuildArgs() []string {
74+
return []string{"build"}
75+
}

0 commit comments

Comments
 (0)