Einrichten einer Docker-Umgebung für die Go-Cross-Compilation (Querkompilierung)
Um eine Docker-Umgebung für die Go-Cross-Compilation einzurichten, müssen wir die folgenden Schritte ausführen:
Docker installieren
Zunächst müssen wir Docker auf dem Host-Rechner installieren. Sie können den offiziellen Docker-Installationsleitfaden für Ihr Betriebssystem befolgen. Beispielsweise können Sie auf Ubuntu 22.04 Docker mit den folgenden Befehlen installieren:
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
Ein Docker-Image für die Go-Cross-Compilation erstellen
Als nächstes müssen wir ein Docker-Image erstellen, das die erforderlichen Tools und Abhängigkeiten für die Go-Cross-Compilation enthält. Wir können ein Basisimage wie golang
verwenden und dann die erforderlichen Cross-Compilation-Tools hinzufügen.
Hier ist ein Beispiel für eine Dockerfile
, die ein Docker-Image für die Go-Cross-Compilation auf Ubuntu 22.04 einrichtet:
FROM golang:1.19
RUN apt-get update && apt-get install -y \
gcc-multilib \
g++-multilib \
crossbuild-essential-armhf \
crossbuild-essential-arm64 \
&& rm -rf /var/lib/apt/lists/*
ENV GOOS=linux
ENV GOARCH=amd64
Diese Dockerfile installiert die erforderlichen Cross-Compilation-Tools wie gcc-multilib
, g++-multilib
, crossbuild-essential-armhf
und crossbuild-essential-arm64
. Sie setzt auch die Standardumgebungsvariablen GOOS
und GOARCH
auf linux
bzw. amd64
.
Das Docker-Image erstellen
Um das Docker-Image zu erstellen, führen Sie den folgenden Befehl im Verzeichnis aus, das die Dockerfile
enthält:
docker build -t labex/go-cross-compile .
Dadurch wird ein Docker-Image mit dem Namen labex/go-cross-compile
erstellt, das Sie für Ihre Go-Cross-Compilation-Aufgaben verwenden können.
Den Docker-Container ausführen
Jetzt können Sie den Docker-Container ausführen und mit der Cross-Compilation Ihres Go-Codes beginnen. Hier ist ein Beispielbefehl:
docker run --rm -v $(pwd):/app -w /app labex/go-cross-compile go build -o myapp
Dieser Befehl bindet das aktuelle Verzeichnis ($(pwd)
) als Verzeichnis /app
im Container ein, legt das Arbeitsverzeichnis auf /app
fest und führt dann den go build
-Befehl aus, um den Go-Code zu cross-compilieren und die Binärdatei myapp
zu erstellen.
Durch die Verwendung dieses Docker-basierten Ansatzes können Sie Ihren Go-Code einfach für verschiedene Zielplattformen cross-compilieren, ohne dass Sie auf Ihrem Host-Rechner komplexe Build-Umgebungen einrichten müssen.