- Intermédiaire
- Construire des images
Comment ça marche
Un binaire lié dynamiquement demande la bibliothèque C au chargeur du système au démarrage. Sur une image sans cette bibliothèque (alpine a musl, scratch n'a rien), le noyau répond « exec /api: no such file or directory » alors que le fichier est bien là : c'est le chargeur qui manque.
Ce qui casse
go build active cgo par défaut quand un compilateur C est disponible, comme dans golang:1.22, et des paquets comme net lient alors le binaire à la glibc. Compile avec CGO_ENABLED=0, ou choisis une base finale avec la même bibliothèque C (distroless/base pour la glibc).
Dans un Dockerfile
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 go build -o /out/api ./cmd/api
FROM scratch
COPY --from=build /out/api /api
ENTRYPOINT ["/api"]
Regarde-le casser, puis répare-le
Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.