Vor Kurzem stand ich vor der Situation, dass ich Swift-Netzwerkcode aus einer meiner Apps extrahieren musste, um ihn auf einem Vapor-Server wiederzuverwenden. Während der Code auf meinem Mac einwandfrei baute, stieß ich beim Deployment auf meinen Server auf mehrere Fehler. Das hat mich dazu gebracht, nach einer Möglichkeit zu suchen, die Linux-Kompatibilität des Codes einfach zu testen – denn Linux ist das Betriebssystem, das typischerweise auf Servern läuft. Zum Glück fand ich diesen Artikel von Ole Begemann aus dem Jahr 2020, der mir erspart hat, Docker von Grund auf lernen zu müssen.
In seinem Artikel beschreibt Ole einen unkomplizierten Ansatz, Swift-Code in einer Linux-Umgebung mit einem einzigen Befehl auszuführen. Du musst dafür lediglich die kostenlose Docker Desktop App auf deinem Mac installieren. Aber der Befehl schien mir recht lang und schwer zu merken, also wollte ich das Ganze noch weiter vereinfachen. Am Ende hatte ich einen Ansatz, bei dem ich mir nur swift-linux merken musste. So geht’s:
Den Docker-Befehl vereinfachen
Zunächst habe ich Oles Befehl für Kürze weiter vereinfacht:
docker run --rm -it -v "$(pwd):/src" -w "/src" swiftErklärung des Befehls (falls es dich interessiert):
docker run: Dieser Befehl erstellt und startet einen Container.--rm: Entfernt den Container automatisch, wenn er beendet wird.-it: Führt den Container im interaktiven Modus mit angeschlossenem Terminal aus.-v "$(pwd):/src": Bindet das aktuelle Verzeichnis ($(pwd)) an/srcim Container ein, sodass du auf deine Swift-Dateien zugreifen kannst.-w "/src": Setzt das Arbeitsverzeichnis im Container auf/src.swift: Gibt das zu verwendende Swift-Docker-Image an.
Beachte, dass ich auch die Option --privileged aus Oles Befehl aus Sicherheitsgründen entfernt habe, da sie zum Testen von Swift Packages selten benötigt wird.
Einen praktischen Alias hinzufügen
Um das Ausführen dieses Befehls einfacher zu machen, habe ich einen Alias zu meiner ~/.zshrc-Datei hinzugefügt (z.B. über touch ~/.zshrc). Das ist eine Konfigurationsdatei für die Zsh-Shell, die heutzutage die Standard-Shell auf macOS ist. So geht’s:
Terminal öffnen
Die
~/.zshrc-Datei bearbeiten Du kannst TextEdit verwenden, den vorinstallierten Texteditor auf macOS. Führe einfach aus:open ~/.zshrcDen Alias hinzufügen Scrolle zum Ende der Datei und füge die folgende Zeile hinzu:
alias swift-linux='docker run --rm -it -v "$(pwd):/src" -w "/src" swift'Datei speichern und schließen
Änderungen anwenden Führe den folgenden Befehl aus, um deine Konfigurationsdatei neu zu laden:
source ~/.zshrc
Befehle in einer Linux-Umgebung ausführen
Jetzt, da der Alias eingerichtet ist, kannst du deinen Swift-Code ganz einfach direkt von deinem Mac aus in einer Linux-Umgebung testen. Navigiere einfach im Terminal zu deinem Projektverzeichnis und führe aus:
swift-linuxBeim ersten Mal dauert der Download des Linux-Containers etwas.
Dieser Befehl versetzt dich in eine Linux-Umgebung, in der du je nach Bedarf swift build oder swift test ausführen kannst. Tippe einfach exit ein, um zu deinem Mac zurückzukehren. So kannst du schnell überprüfen, ob alles wie erwartet funktioniert, und Fehler erkennen, bevor du auf deinen Server deployest.
Und alles, was du dir merken musst, ist swift-linux!

