Docker et Swift : Conteneurisation d'applications pour iOS et macOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à Docker et Swift : Pourquoi est-ce important ?



Dans le développement logiciel moderne, la conteneurisation est devenue le standard de facto pour garantir la reproductibilité, l'évolutivité et la simplicité de déploiement des applications. Si vous développez en Swift pour iOS ou macOS, vous êtes probablement habitué à l'écosystème Xcode et au Package Manager. Cependant, lorsqu'il s'agit de la partie serveur (Swift on Server) ou de créer des environnements isolés pour la compilation et les tests, Docker devient un outil indispensable.



Dans cet article, nous allons voir comment conteneuriser des applications Swift avec Docker. Vous apprendrez à créer un Dockerfile pour Swift, à configurer l'environnement pour le framework serveur Vapor, et à optimiser le processus de compilation. Ce contenu sera utile aussi bien aux développeurs iOS qui découvrent le backend qu'aux ingénieurs DevOps travaillant avec Swift.



Les bases de Docker pour un développeur Swift



Docker permet d'empaqueter une application avec toutes ses dépendances dans un conteneur léger. Pour Swift, c'est particulièrement pertinent car le compilateur et les bibliothèques peuvent varier selon la version du système d'exploitation. Au lieu de configurer un serveur manuellement, il vous suffit de lancer un conteneur.



Installation de Docker et du SDK Swift

La première chose à faire est de vous assurer que Docker est installé. Ensuite, vous aurez besoin d'une image Swift. L'image officielle d'Apple est disponible sur Docker Hub :

docker pull swift:5.9

Cette image inclut le compilateur Swift, le Package Manager et les utilitaires de base. Vous pouvez l'utiliser à la fois pour compiler et pour exécuter des applications.



Création d'une application Swift simple

Créons une application console minimale :

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

Initialisons le projet :

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


Rédaction d'un Dockerfile pour Swift



Créons maintenant un Dockerfile à la racine du projet. Il est important d'utiliser une compilation multi-étapes (multi-stage build) pour que l'image finale soit minimale.



# Première étape : compilationFROM swift:5.9 AS buildWORKDIR /appCOPY Package.swift Package.resolved ./RUN swift package resolveCOPY . .RUN swift build -c release --static-swift-stdlib

# Deuxième étape : exécutionFROM ubuntu:22.04WORKDIR /appCOPY --from=build /app/.build/release/MySwiftApp .CMD ["./MySwiftApp"]


Explication :

  • --static-swift-stdlib — liaison statique de la bibliothèque standard Swift, pour ne pas inclure libswift.so dans l'image.
  • COPY Package.swift séparément — mise en cache des dépendances par Docker.
  • Ubuntu 22.04 — base légère pour l'exécution.


Compilez et exécutez :

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


Conteneurisation d'une application Vapor



Le framework Vapor est le choix le plus populaire pour le Swift côté serveur. Examinons un Dockerfile pour un projet Vapor typique.



Structure d'un projet Vapor

Supposons que vous ayez un projet créé avec vapor new MyVaporApp. Le Dockerfile sera plus complexe, car il faut prendre en compte le travail avec le réseau et la base de données.



# Étape de compilationFROM 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

# Étape d'exécutionFROM 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"]


Points importants :

  • libsqlite3-dev —

Blogs

Book Recommendations