Utilisez Docker pour déployer le service Springboot

Dans l'article précédent, docker a été construit dans centos7 et a essayé les opérations de base de mise en miroir d'image et de commande de conteneur de conteneur.
Dans cet article, j'essaierai de démarrer et d'utiliser le service springboot dans le conteneur Docker. Les étapes de base consistent à préparer le fichier jar, configurer Docker, créer l'image, démarrer le conteneur et tester la fonction de service.

Préparez le pot de printemps

Pour une démonstration simple, j'ai créé un nouveau projet springboot et j'ai uniquement écrit une interface de contrôleur pour visualiser l'effet. Le code d'interface de contrôleur est le suivant:

@RestController
@RequestMapping
public class TestController {
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
}

Après avoir confirmé que le code ci-dessus peut s'exécuter normalement et que le navigateur est normalement accessible, générez un jar exécutable Springboot, que j'ai nommé ici demo.jar, puis téléchargez ce fichier dans le répertoire où l'image docker doit être créée dans la machine virtuelle Linux, par exemple /root/docker/demo.

Configurer Dockerfile

Une fois que vous avez le jar, vous pouvez configurer le fichier Dockerfile. Je suis venu ici dans cet ordre car le fichier jar doit être spécifié dans le Dockerfile.
En fait, le fichier Dockerfile n'est qu'un fichier statique, et il n'y a pas de problème avec la configuration avant le fichier jar.Il a seulement besoin de garder le nom et le chemin du fichier jar généré ultérieurement cohérent avec le fichier Dockerfile.
Dans le répertoire où se trouve le fichier jar ci-dessus, utilisez la commande vi pour créer et modifier le Dockerfile:

vi Dockerfile

Modifier le contenu du fichier:

FROM java:8
VOLUME /tmp
COPY demo.jar app.jar
RUN bash -c “touch /app.jar”
ENTRYPOINT ["java","-jar","/app.jar"]

La signification du contenu ci-dessus est la suivante:

La première ligne, l'image image générée par ce Dockerfile, est basée sur java8; la
troisième ligne, demo.jarcopie les fichiers du répertoire courant dans le conteneur docker et les renomme en même temps app.jar; les
quatrième et cinquième lignes, exécutez app.jar, c'est-à-dire pour démarrer spingboot un service.

Les personnes prudentes constateront que l'explication ci-dessus ne mentionne pas la deuxième ligne. En effet, cette ligne n'est pas nécessaire. Elle n'est utilisée que lorsque le système de fichiers doit être utilisé, c'est-à-dire que le programme dans le docker doit être configuré lors de l'exploitation directe des fichiers. Celui-là.
De plus, cette façon d'écrire n'est qu'une des façons d'associer les fichiers docker et hôte. Il existe d'autres façons d'écrire, et nous en apprendrons plus plus tard.

La configuration ci-dessus est similaire à celle écrite dans de nombreux didacticiels en ligne. Dans une certaine mesure, cela peut provoquer des malentendus pour les personnes qui ne sont pas claires, et elles penseront que beaucoup d'entre elles sont en écriture fixe, mais en fait, la plupart des contenus ci-dessus peuvent être écrits d'une autre manière.
Tout d'abord, les mots au début de chaque ligne ci-dessus sont tous en majuscules, mais comme les mots-clés sql lors de l'utilisation de la requête mysql, les mots-clés ici n'ont pas besoin d'être en majuscules et les minuscules peuvent également être utilisées.
Deuxièmement, si la deuxième ligne est nécessaire, le répertoire pointé par le dos n'a pas besoin d'utiliser tmp, et d'autres peuvent également être utilisés.
Ensuite, il y a l'opération d'ajout de fichiers locaux au conteneur, qui peuvent être utilisés copyou utilisés add. Les deux nécessitent deux paramètres, l'un est le chemin du fichier local et le nom du fichier, et l'autre est le nom du fichier dans le conteneur du docker.
Par conséquent, l'app.jar à l'arrière peut naturellement être appelé par d'autres noms, à condition qu'il soit cohérent lors de son utilisation.
Par conséquent, le libellé de la configuration ci-dessus peut également être modifié comme suit:

from java:8
volume /test
add demo.jar demo.jar
run bash -c "touch /demo.jar"
entrypoint ["java","-jar","/demo.jar"]

création d'image

Maintenant que vous avez le jar dont vous avez besoin pour exécuter et le fichier Dockerfile configuré, les préparatifs sont terminés, puis vous pouvez créer une image image, utilisez la commande suivante:

docker build -t docker-spring .

Faites particulièrement attention au symbole de point à la fin de la commande ci-dessus .. Il est facile de l'ignorer. Après avoir exécuté la commande ci-dessus, vous verrez le résultat suivant:

Sending build context to Docker daemon  16.52MB
Step 1/6 : from java:8
 ---> d23bdf5b1b1b
Step 2/6 : volume /test
 ---> Running in 5533951f04ca
Removing intermediate container 5533951f04ca
 ---> 0965f253bac5
Step 3/6 : add demo.jar demo.jar
 ---> bff720047ccb
Step 4/6 : run bash -c "touch /demo.jar"
 ---> Running in 900c847c14a4
Removing intermediate container 900c847c14a4
 ---> edb32f0ef654
Step 5/6 : expose 8080
 ---> Running in c25a898a3e37
Removing intermediate container c25a898a3e37
 ---> 55bbf5e81907
Step 6/6 : entrypoint ["java","-jar","/demo.jar"]
 ---> Running in b891f3caeeb3
Removing intermediate container b891f3caeeb3
 ---> 8caaec5d617b
Successfully built 8caaec5d617b
Successfully tagged docker-spring:latest

La sortie ci-dessus signifie que l'image a été créée avec succès. Si c'est la première fois que docker est utilisé sur cette machine et qu'il n'y a pas de miroir java8, l'exécution de la commande ci-dessus sera plus lente et le miroir java8 sera extrait de la bibliothèque de miroirs distants, si ce n'est pas le premier La deuxième fois sera beaucoup plus rapide, car ce miroir existe déjà localement et sera utilisé directement.

Démarrer le conteneur

Une fois l'image terminée, vous pouvez spécifier l'image pour démarrer le conteneur. Étant donné que le conteneur lui-même démarrera un port après l'exécution du service, mais qu'il n'utilise pas directement le port de la machine physique, il est nécessaire de mapper le port de service dans le menu fixe avec le port externe lors du démarrage. Dans le même temps, afin de faciliter l'opération, vous pouvez également utiliser le mode de fonctionnement en arrière-plan, utilisez -d, puis la commande de démarrage finale est la suivante:

docker run -d -p 8000:8080 docker-spring

L'opération ci-dessus démarrera l'image docker-spring, utilisera le port 8080 dans le conteneur docker et mappera le port 8080 au port 8000 de la machine virtuelle.
Il convient de noter qu'en utilisation réelle, la spécification de paramètre ci-dessus doit être située avant le nom du miroir. Si le paramètre est spécifié après l'écriture du nom du miroir, le paramètre ne prendra pas effet.

vérification

Une fois le conteneur et le service démarrés, vous pouvez utiliser l'adresse IP et le port mappé de la machine virtuelle dans le navigateur pour accéder aux services dans le menu fixe. Par exemple, ma machine virtuelle est 192.168.139.91. Selon le code d'interface au début, vous pouvez entrer l'URL suivante dans le navigateur:

http://192.168.139.91:8000/hello

Vous verrez que le navigateur renvoie normalement une hellochaîne, ce qui prouve que le service springboot du docker est déployé avec succès.

Je suppose que tu aimes

Origine blog.csdn.net/tuzongxun/article/details/108401296
conseillé
Classement