Pour comprendre Docker, créons et exécutons une image docker d'une application très simple. Plus précisément, exécutez une application qui affiche «Hello world!» Une fois par seconde. Essayez de tout faire, de la construction à l'exécution sur le conteneur.
Le code source Java est le suivant. https://github.com/nannany/very-simple-application
Exécuté sur Windows10 HOME. J'ai utilisé Docker Toolbox pour créer l'environnement d'exploitation de Docker sous Windows. Consultez l'article suivant pour plus de détails. https://qiita.com/idani/items/fb7681d79eeb48c05144
Ecrire Dockerfile → Exécuter la commande de construction docker L'image du docker est créée avec.
Le déroulement approximatif de la création d'une image docker ressemble à la figure ci-dessous. En tant que personnage à connaître
Décidez du chemin à ajouter au contexte de construction lors de l'exécution de la commande de construction docker.
À ce stade, décrivez les fichiers que vous ne souhaitez pas apporter au contexte de construction dans le fichier .dockerignore
.
Utilisez également la commande COPY dans le Dockerfile pour décider ce qu'il faut apporter à l'image dans le contexte de construction.
Dans l'ensemble, c'est comme suit.
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"]
Tout d'abord, écrivez FROM
pour sélectionner l'image de base.
Ici, sélectionnez ʻubuntu: disco` selon le cas.
Ensuite, écrivez COPY ..
pour copier le fichier du contexte de construction vers l'image.
Ensuite, installez les packages (maven et openjdk) requis pour générer la source et exécuter Java, puis exécutez la commande de création maven jar.
RUN apt-get update && apt-get install -y \
maven \
openjdk-8-jre \
&& cd simple \
&& mvn package
J'ai imité ce qui suit et j'étais conscient de minimiser le nombre de couches et de faire la mise à jour et l'installation d'apt-get en même temps. http://docs.docker.jp/engine/articles/dockerfile_best-practice.html
Enfin, j'ai écrit ce qui suit pour que java -jar simple / target / simple-1.0-SNAPSHOT.jar
soit exécuté après le démarrage du conteneur.
CMD ["java","-jar","simple/target/simple-1.0-SNAPSHOT.jar"]
La commande docker à exécuter lors de la création d'une image est
docker build -t simple-application -f Dockerfile.cmd .
Dans -t simple-application
, le nom de l'image est simple-application.
Dans -f Dockerfile.cmd
, le Dockerfile utilisé lors de la création de l'image est Dockerfile.cmd dans le chemin où la commande ci-dessus est exécutée. (Par défaut, le Dockerfile dans le chemin où la commande est exécutée est sélectionné)
Le .
final signifie que le chemin sous lequel la commande est exécutée sera ajouté au contexte de construction.
Essayez d'exécuter l'image créée ci-dessus avec la commande suivante.
docker run simple-application-cmd
Il a été affiché comme ci-dessous et cela a fonctionné.
Ci-dessus, j'ai spécifié ʻubuntu: disco` comme image de base et installé maven et Java sur l'image avec RUN. Cependant, comme il existe une image de base qui contient à l'origine maven et Java, le Dockerfile qui l'utilise est le suivant. (Je l'ai sauté parce que j'ai eu une erreur dans le test pour une raison quelconque)
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