Afin de réduire la taille de Docker, des constructions en plusieurs étapes sont souvent utilisées, dans lesquelles le générateur et l'image réellement utilisées sont écrits en étapes distinctes. Lors de l'utilisation de cette version en plusieurs étapes, vous souhaiterez peut-être installer la bibliothèque avec le générateur et ajouter la bibliothèque à l'image réelle avec ADD ou COPY.
La bibliothèque contient souvent un lien symbolique, mais les commandes ADD et COPY de Docker ne peuvent pas ajouter de lien symbolique.
Ce problème peut être résolu étonnamment facilement en tarant le lien symbolique requis dans le générateur et en développant le fichier tar à l'étape suivante.
Examinons de plus près l'exemple actuel de Dockerfile.
FROM debian:latest as builder
RUN tar czf testlib.tar.gz /usr/local/lib/test.so.* \
/usr/local/lib/test1.so.* \
/usr/local/lib/test2.so.* #Tarer le lien symbolique requis
FROM debian:latest
COPY --from=builder /testlib.tar.gz /testlib.tar.gz #Copiez le fichier tar renforcé
RUN cd / && tar xzf testlib.tar.gz #Déployer le lien symbolique solidifié
Cela semble être un rêve que j'ai eu du mal à essayer d'ajouter un lien symbolique avec AJOUTER ou COPIER jusqu'à ce que je sache comment faire cela.
Recommended Posts