Build kaniko ne contient pas les bibliothèques
On a basculé les builds d'images Docker sur Kaniko pour pouvoir utiliser un runner Docker simple et partagé plutôt que les runners shell. Celà résulte en quelques soucis avec l'image synapse, probablement en raison du multi-stage, mais pas bien reproductible.
Le Dockerfile est multi-stage : https://forge.tedomum.net/tedomum/synapse/-/blob/tedomum-prod/docker/Dockerfile. La ligne 51 installe les dépendances dans le premier stage dans le chemin /install
, puis ligne 77 les dépendances sont copiées vers le second stage dans /usr/local
, qui s'ajoutent aux fichiers de l'image Python alpine. Problème : dans l'image réutante, /usr/local
contient uniquement les fichiers de l'image de base, pas la copie du /install
.
J'ai buildé un Dockerfile juste du premier stage, il y a bien les fichiers dans /install
.
J'ai buildé le Dockerfile suivant pour reproduire un comportement plutôt similaire. Il Tout semble fonctionner sans souci.
FROM alpine:latest as builder
RUN mkdir -p /install/test/other
RUN echo ok > /install/test/other/ok
RUN mkdir -p /install/test/package
RUN echo ok > /install/test/package/ok
FROM alpine:latest
RUN mkdir -p /usr/local/test/package
RUN echo ko > /usr/local/test/package/ko
COPY --from=builder /install /usr/local
Je suis donc un petit peu perdu. J'ai d'abord supposé que le multi-stage ne fonctionnait pas, mais manifestement si. J'ai ensuite cru que c'était lié à la présence de fichiers de base dans `/usr/local de l'image, mais ça ne semble pas être ça non plus.