[v9.3.x] Docker Build: Use tonistiigi/binfmt image for cross compilation (#64116)
Docker Build: Use `tonistiigi/binfmt` image for cross compilation (#64108)
* Change docker image used for cross-compilation
* Replace fmt.Println with log.Println
* Add specific tag for docker image
(cherry picked from commit b42fd92fad)
Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
This commit is contained in:
co-authored by
Dimitris Sotirakis
parent
6636a56199
commit
587bbf20d3
@@ -10,6 +10,9 @@ import (
|
|||||||
// AllArchs is a list of all supported Docker image architectures.
|
// AllArchs is a list of all supported Docker image architectures.
|
||||||
var AllArchs = []string{"amd64", "armv7", "arm64"}
|
var AllArchs = []string{"amd64", "armv7", "arm64"}
|
||||||
|
|
||||||
|
// emulatorImage is the docker image used as the cross-platform emulator
|
||||||
|
var emulatorImage = "tonistiigi/binfmt:qemu-v7.0.0"
|
||||||
|
|
||||||
// Init initializes the OS for Docker image building.
|
// Init initializes the OS for Docker image building.
|
||||||
func Init() error {
|
func Init() error {
|
||||||
// Necessary for cross-platform builds
|
// Necessary for cross-platform builds
|
||||||
@@ -18,11 +21,14 @@ func Init() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Enable execution of Docker images for other architectures
|
// Enable execution of Docker images for other architectures
|
||||||
|
//nolint:gosec
|
||||||
cmd := exec.Command("docker", "run", "--privileged", "--rm",
|
cmd := exec.Command("docker", "run", "--privileged", "--rm",
|
||||||
"docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64")
|
emulatorImage, "--install", "all")
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to enable execution of cross-platform Docker images: %w\n%s", err, output)
|
return fmt.Errorf("failed to enable execution of cross-platform Docker images: %w\n%s", err, output)
|
||||||
}
|
}
|
||||||
|
log.Println("emulators have been installed successfully!")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user