Um Docker zu verstehen, erstellen wir ein Docker-Image einer sehr einfachen Anwendung und führen es aus. Führen Sie insbesondere eine Anwendung aus, die einmal pro Sekunde "Hallo Welt!" Ausgibt. Ziel ist es, alles vom Build bis zur Ausführung des Containers zu erledigen.
Der Java-Quellcode lautet wie folgt. https://github.com/nannany/very-simple-application
Wird unter Windows 10 HOME ausgeführt. Ich habe Docker Toolbox verwendet, um die Betriebsumgebung für Docker unter Windows zu erstellen. Weitere Informationen finden Sie im folgenden Artikel. https://qiita.com/idani/items/fb7681d79eeb48c05144
Docker-Datei schreiben → Docker-Build-Befehl ausführen Das Docker-Image wird mit erstellt.
Der grobe Ablauf beim Erstellen eines Docker-Bilds sieht wie in der folgenden Abbildung aus. Als Charakter zu beachten
Entscheiden Sie, welcher Pfad dem Build-Kontext hinzugefügt werden soll, wenn Sie den Docker-Build-Befehl ausführen. Beschreiben Sie zu diesem Zeitpunkt die Dateien, die Sie nicht in den Build-Kontext bringen möchten, in der Datei ".dockerignore".
Verwenden Sie außerdem den Befehl COPY in der Docker-Datei, um zu entscheiden, was im Build-Kontext zum Image hinzugefügt werden soll.
Insgesamt ist es wie folgt.
FROM ubuntu:disco
COPY . .
RUN apt-get update && apt-get install -y \
maven \
openjdk-8-jre \
&& cd simple \
&& mvn package
CMD ["java","-jar","simple/target/simple-1.0-SNAPSHOT.jar"]
Schreiben Sie zuerst "FROM", um das Basisbild auszuwählen. Wählen Sie hier "Ubuntu: Disco".
Schreiben Sie dann "COPY ..", um die Datei aus dem Build-Kontext in das Image zu kopieren.
Installieren Sie als Nächstes die Pakete (maven und openjdk), die zum Erstellen der Quelle und zum Ausführen von Java erforderlich sind, und führen Sie den Befehl zum Erstellen von maven jar aus.
RUN apt-get update && apt-get install -y \
maven \
openjdk-8-jre \
&& cd simple \
&& mvn package
Die Art zu schreiben besteht darin, Folgendes nachzuahmen, und ich war mir bewusst, die Anzahl der Ebenen zu minimieren und gleichzeitig apt-get update und install durchzuführen. http://docs.docker.jp/engine/articles/dockerfile_best-practice.html
Schließlich habe ich Folgendes geschrieben, damit "java -jar simple / target / simple-1.0-SNAPSHOT.jar" ausgeführt wird, nachdem der Container gestartet wurde.
CMD ["java","-jar","simple/target/simple-1.0-SNAPSHOT.jar"]
Der Docker-Befehl, der beim Erstellen eines Images ausgeführt werden soll, lautet
docker build -t simple-application -f Dockerfile.cmd .
In -t simple-application
lautet der Name des Bildes simple-application.
In -f Dockerfile.cmd
ist die Dockerfile, die beim Erstellen des Bildes verwendet wird, Dockerfile.cmd in dem Pfad, in dem der obige Befehl ausgeführt wird. (Standardmäßig ist die Docker-Datei in dem Pfad ausgewählt, in dem der Befehl ausgeführt wird.)
Das letzte .
bedeutet, dass der Pfad, unter dem der Befehl ausgeführt wird, zum Build-Kontext hinzugefügt wird.
Versuchen Sie, das oben erstellte Image mit dem folgenden Befehl auszuführen.
docker run simple-application-cmd
Es wurde wie folgt angezeigt und es hat funktioniert.
Oben habe ich "ubuntu: disco" als Basis-Image angegeben und Maven und Java mit RUN auf dem Image installiert. Da es jedoch ein Basis-Image gibt, das ursprünglich Maven und Java enthält, lautet die Docker-Datei, die es verwendet, wie folgt. (Ich habe es übersprungen, weil ich aus irgendeinem Grund einen Fehler im Test bekommen habe)
FROM maven:3-jdk-8
COPY . .
RUN cd simple && mvn package -Dmaven.test.skip=true
CMD ["java","-jar","simple/target/simple-1.0-SNAPSHOT.jar"]
Recommended Posts