
Docker & Containerization
Dockerfile, multi-stage builds, image optimization, docker-compose, container orchestration
1Quelle est la principale raison d'utiliser un multi-stage build pour une application Go ?
Quelle est la principale raison d'utiliser un multi-stage build pour une application Go ?
Réponse
Le multi-stage build permet de séparer l'environnement de compilation de l'image finale. L'étape de build contient le SDK Go complet (plusieurs centaines de Mo), tandis que l'image finale ne contient que le binaire compilé. Cela réduit drastiquement la taille de l'image (de ~800MB à quelques MB) et minimise la surface d'attaque en éliminant les outils de compilation inutiles en production.
2Quelle image de base est recommandée pour une application Go en production pour minimiser la taille et la surface d'attaque ?
Quelle image de base est recommandée pour une application Go en production pour minimiser la taille et la surface d'attaque ?
Réponse
L'image scratch est une image vide sans système d'exploitation. Go compile en binaires statiques qui n'ont pas besoin de libc ou d'autres dépendances système, ce qui permet d'utiliser scratch. Cela produit les images les plus petites possibles (quelques MB) et offre la meilleure sécurité car il n'y a aucun outil ni shell exploitable. Distroless et alpine sont des alternatives valides mais moins optimales.
3Quels flags de compilation Go sont nécessaires pour créer un binaire compatible avec une image scratch ?
Quels flags de compilation Go sont nécessaires pour créer un binaire compatible avec une image scratch ?
Réponse
CGO_ENABLED=0 désactive cgo, forçant Go à utiliser des implémentations pure Go pour les packages comme net et os/user. Sans cela, le binaire aurait des dépendances dynamiques vers libc. GOOS et GOARCH spécifient la plateforme cible. Ces flags combinés produisent un binaire entièrement statique sans dépendances externes, idéal pour scratch.
Comment optimiser le cache des layers Docker lors du build d'une application Go ?
Quel est l'avantage d'utiliser les images Google Distroless pour Go par rapport à scratch ?
+17 questions d'entretien
Autres sujets d'entretien Go
Les bases de Go
Structures de données Go
Interfaces Go
Gestion des erreurs
Goroutines basiques
Channels
Go Modules
Serveur HTTP
Client HTTP
Encodage JSON
database/sql
Package context
Testing
Patterns de concurrence
Primitives de synchronisation
Frameworks web Go
Design d'API REST
gRPC
Reflection
Gestion mémoire
Optimisation des performances
Generics
Design Patterns Go
Microservices
Sécurité & Authentication
Kubernetes Basics
Go Avancé
Développement CLI
Maîtrise Go pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement