2016-01-18 15 views
19

Ich lese auf der Docker Dokumentation wie ONBUILD Anweisung verwendet werden kann, aber es ist überhaupt nicht klar.
Kann mir bitte jemand das erklären?Dockerfile ONBUILD Anweisung

+0

Welchen Teil von [Dokumentation] (https://docs.docker.com/engine/reference/builder/#onbuild) Sie verstehe nicht? 'Dies ist nützlich, wenn Sie ein Bild erstellen, das als Basis verwendet wird, um andere Bilder zu erstellen. –

+0

Aber was kann ich damit machen. Bitte gib mir ein Beispiel. –

+1

Dokumentation hat auch ein Beispiel. Zuerst können Sie Ihre benutzerdefinierte Image-Docker-Datei mit den erforderlichen Betriebssystembibliotheken erstellen: curl, gd, etc und fügen onbuild-Anweisung hinzu, um später Quellcode hinzuzufügen. Beispiel 'onbuild add src /' Später erstellen Sie eine andere Docker-Datei, verwenden jedoch zuvor erstellte Image (FROM-Anweisung) und stapeln Quellcode darauf. Sie haben also ein Bild mit Freezed OS-Level-Bibliotheken und Quellcode. –

Antwort

28

Die ONBUILD intruction ist sehr nützlich, um den Build Ihres gewählten Software-Stacks zu automatisieren.

Beispiel

Die Maven container ist so konzipiert, Java-Programme zu kompilieren. Magisch alle Dockerfile Ihr Projekt braucht, ist zu tun, um die ONBUILD intructions Bezug der Grundbehälter enthält:

FROM maven:3.3-jdk-8-onbuild 
CMD ["java","-jar","/usr/src/app/target/demo-1.0-SNAPSHOT-jar-with-dependencies.jar"] 

Die Dockerfile des Basisbild alle

sagt
FROM maven:3-jdk-8 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

ONBUILD ADD . /usr/src/app 

ONBUILD RUN mvn install 

Es gibt ein Basisbild, das sowohl Java und Maven installiert und eine Reihe von Anweisungen zum Kopieren von Dateien und Maven ausführen.

Die folgende Antwort gibt ein Java-Beispiel