Um die Größe von Docker zu verringern, werden häufig mehrstufige Builds verwendet, bei denen der Builder und das tatsächlich verwendete Image separat geschrieben werden. Wenn Sie diesen mehrstufigen Build verwenden, möchten Sie möglicherweise die Bibliothek mit dem Builder installieren und die Bibliothek mit ADD oder COPY zum eigentlichen Image hinzufügen.
Die Bibliothek enthält häufig Symbolic Link, aber die Befehle ADD und COPY von Docker können keine Symbolic Link hinzufügen.
Dieses Problem kann überraschend einfach gelöst werden, indem der erforderliche symbolische Link im Builder tariert und die TAR-Datei in der nächsten Stufe erweitert wird.
Schauen wir uns das aktuelle Dockerfile-Beispiel genauer an.
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.* #Tarieren Sie den erforderlichen symbolischen Link
FROM debian:latest
COPY --from=builder /testlib.tar.gz /testlib.tar.gz #Kopieren Sie die gehärtete Teerdatei
RUN cd / && tar xzf testlib.tar.gz #Stellen Sie den verfestigten symbolischen Link bereit
Es scheint ein Traum zu sein, dass es mir schwer gefallen ist, einen symbolischen Link mit ADD oder COPY hinzuzufügen, bis ich wusste, wie das geht.
Recommended Posts