Docker und Swift: Containerisierung von Anwendungen für iOS und macOS

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Docker und Swift: Warum ist das wichtig?



In der modernen Softwareentwicklung ist Containerisierung zum De-facto-Standard geworden, um Reproduzierbarkeit, Skalierbarkeit und einfache Bereitstellung von Anwendungen zu gewährleisten. Wenn Sie mit Swift für iOS oder macOS entwickeln, sind Sie wahrscheinlich an das Xcode-Ökosystem und den Package Manager gewöhnt. Wenn es jedoch um die Serverseite (Swift on Server) oder die Erstellung isolierter Umgebungen für Build und Tests geht, wird Docker zu einem unverzichtbaren Werkzeug.



In diesem Artikel werden wir untersuchen, wie man Swift-Anwendungen mit Docker containerisiert. Sie erfahren, wie Sie ein Dockerfile für Swift erstellen, die Umgebung für das Server-Framework Vapor konfigurieren und den Build-Prozess optimieren. Das Material wird sowohl für iOS-Entwickler, die Backend lernen, als auch für DevOps-Ingenieure, die mit Swift arbeiten, nützlich sein.



Grundlagen von Docker für Swift-Entwickler



Docker ermöglicht es, eine Anwendung zusammen mit all ihren Abhängigkeiten in einen leichtgewichtigen Container zu packen. Für Swift ist dies besonders relevant, da Compiler und Bibliotheken je nach Betriebssystemversion variieren können. Anstatt einen Server manuell zu konfigurieren, starten Sie einfach einen Container.



Installation von Docker und Swift SDK

Stellen Sie zunächst sicher, dass Docker installiert ist. Dann benötigen Sie ein Swift-Image. Das offizielle Image von Apple ist auf Docker Hub verfügbar:

docker pull swift:5.9

Dieses Image enthält den Swift-Compiler, den Package Manager und grundlegende Dienstprogramme. Sie können es sowohl zum Bauen als auch zum Ausführen von Anwendungen verwenden.



Erstellen einer einfachen Swift-Anwendung

Erstellen wir eine minimale Konsolenanwendung:

// main.swiftprint("Hello, Docker with Swift!")

Initialisieren wir das Projekt:

mkdir MySwiftApp && cd MySwiftAppswift package init --type executable


Schreiben eines Dockerfile für Swift



Erstellen wir nun ein Dockerfile im Stammverzeichnis des Projekts. Es ist wichtig, einen Multi-Stage-Build zu verwenden, damit das endgültige Image minimal ist.



# Erste Stufe: BuildFROM swift:5.9 AS buildWORKDIR /appCOPY Package.swift Package.resolved ./RUN swift package resolveCOPY . .RUN swift build -c release --static-swift-stdlib

# Zweite Stufe: AusführungFROM ubuntu:22.04WORKDIR /appCOPY --from=build /app/.build/release/MySwiftApp .CMD ["./MySwiftApp"]


Erklärung:

  • --static-swift-stdlib — statisches Linken der Swift-Standardbibliothek, um libswift.so nicht in das Image mitzunehmen.
  • COPY Package.swift separat — Zwischenspeicherung der Abhängigkeiten durch Docker.
  • Ubuntu 22.04 — leichtgewichtige Basis für die Laufzeitumgebung.


Bauen und starten Sie:

docker build -t my-swift-app .docker run --rm my-swift-app


Containerisierung einer Vapor-Anwendung



Das Framework Vapor ist die beliebteste Wahl für serverseitiges Swift. Betrachten wir ein Dockerfile für ein typisches Vapor-Projekt.



Struktur eines Vapor-Projekts

Angenommen, Sie haben ein Projekt, das mit vapor new MyVaporApp erstellt wurde. Das Dockerfile wird komplexer sein, da die Arbeit mit Netzwerk und Datenbank berücksichtigt werden muss.



# Build-StufeFROM swift:5.9 AS buildRUN apt-get update && apt-get install -y libsqlite3-devWORKDIR /appCOPY Package.swift Package.resolved ./RUN swift package resolveCOPY . .RUN swift build -c release

# AusführungsstufeFROM swift:5.9-slimWORKDIR /appCOPY --from=build /app/.build/release/MyVaporApp .COPY --from=build /app/Public ./PublicCOPY --from=build /app/Resources ./ResourcesEXPOSE 8080CMD ["./MyVaporApp", "serve", "--hostname", "0.0.0.0", "--port", "8080"]


Wichtige Punkte:

  • libsqlite3-dev —

Blogs

Buchempfehlungen