Table des matières
Répertoire du projet
dockerfile
File Deployment
Générer une image
Suivre les étapes ci-dessus suffit pour gérer facilement l'ensemble du processus du déploiement Docker de Springboot. Mais après avoir démarré le conteneur, chaque fois que le package jar doit être mis à jour, l'image doit être recréée, puis le conteneur doit être recréé. Le processus est extrêmement lourd et extrêmement inefficace. Alors, comment mettre à jour directement le package jar pour terminer le déploiement sans mettre à jour l'image ou le conteneur ?
脚本部署
Déploiement de script
Afficher les journaux Docker
遇到的问题
Problèmes rencontrés🎜🎜Description du problème : réponse d'erreur du démon : échec de programmation du pilote pour la connectivité externe sur le point de terminaison flamboyant_leavitt (échec d'iptables : iptables --wait -t nat -a docker -p tcp -d 0/ 0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0 : iptables : pas de chaîne/cible/correspondance de ce nom.🎜🎜Solution : redémarrez docker. systemctl redémarrer le docker🎜
Maison Java javaDidacticiel Comment Docker déploie SpringBoot et remplace les packages jar

Comment Docker déploie SpringBoot et remplace les packages jar

May 12, 2023 pm 02:16 PM
docker jar springboot

Répertoire du projet

Comment Docker déploie SpringBoot et remplace les packages jar

dockerfile

Créez un fichier dockerfile, qui sera utilisé plus tard.

File Deployment

Créez un nouveau dossier /data/docker/hellolearn sur le serveur (le chemin du fichier peut être personnalisé), placez le package jar packagé maven et le fichier docker créé ci-dessus Copiez le fichier dans le dossier nouvellement créé sur le serveur (/data/docker/hellolearn).

Comment Docker déploie SpringBoot et remplace les packages jar

Générer une image

docker build -t hellolearn .

#🎜 🎜#docker build -t Nom de l'image : La position relative du fichier docker de l'étiquette. Le point représente le répertoire actuel. Si aucune balise n'est écrite, la valeur par défaut est la plus récente.

Comment Docker déploie SpringBoot et remplace les packages jar

Démarrer le conteneur

docker run -d -p 8301:8301 --name hellolearn hellolearn#🎜 🎜#

docker start hellolearn

Le paramètre -d permet au conteneur de s'exécuter en arrière-plan ; --name est le nom du conteneur spécifié ; effectuer le mappage de port. À ce stade, le serveur Le port 8301 (port avant les deux-points) dans le conteneur est mappé au port 8301 (port après les deux-points) dans le conteneur (application.properties est configuré avec 8301)

Visitez le Web

Comment Docker déploie SpringBoot et remplace les packages jardéploiement du mappage de package jar

Suivre les étapes ci-dessus suffit pour gérer facilement l'ensemble du processus du déploiement Docker de Springboot. Mais après avoir démarré le conteneur, chaque fois que le package jar doit être mis à jour, l'image doit être recréée, puis le conteneur doit être recréé. Le processus est extrêmement lourd et extrêmement inefficace. Alors, comment mettre à jour directement le package jar pour terminer le déploiement sans mettre à jour l'image ou le conteneur ?

5.1 Mettre à jour le dockerfile

Dernière ligne point d'entrée ["java","-jar","/data/learn-web-0.0.1-snapshot.jar "] exécutera le fichier learn-web-0.0.1-snapshot.jar dans le répertoire /data du conteneur.

5.2 Utilisez la commande docker build pour créer l'image  entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"] 会运行容器里/data目录下的learn-web-0.0.1-snapshot.jar文件。

5.2 使用docker build命令构建镜像

docker build -t hellolearn .

5.3 创建&启动容器

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

-v 宿主机目录关联容器目录。这样宿主机的/data/docker/newhellolearn/package目录就与docker的/data目录进行映射。

这样的话,当jar包发生变动时,直接更新宿主机的/data/docker/newhellolearn/package目录下的jar包即可,更新jar包之后需要将容器重启一下。

脚本部署

通过jar包部署方式引起一个问题,若jar包名字发生变化,比如版本号变化(learn-web-0.0.1-snapshot.jar-->>learn-web-1.0.1-snapshot.jar)。需要怎么处理呢?下面就介绍第三种通过脚本部署的方式。

6.1 创建hellolearn.sh文件

java -jar /data/learn-web-0.0.1-snapshot.jar

将hellolearn.sh上传到/data/docker/hellolearn/scriptdeploy/package,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。

6.2 添加脚本执行权限

chmod +x hellolearn.sh

6.3 创建dockerfile

cmd ["sh","-c","/data/hellolearn.sh"] 

docker build -t hellolearn .

5.3 Créer & démarrez le conteneur

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

# 🎜🎜## 🎜🎜#-v Le répertoire hôte est associé au répertoire conteneur. De cette façon, le répertoire /data/docker/newhellolearn/package de l'hôte est mappé au répertoire /data de docker.

Comment Docker déploie SpringBoot et remplace les packages jarDans ce cas, lorsque le package jar change, mettez simplement à jour le package jar dans le répertoire /data/docker/newhellolearn/package de la machine hôte directement. Après avoir mis à jour le package jar, vous devez redémarrer. le conteneur.

Déploiement de script

La méthode de déploiement du package jar provoque un problème si le nom du package jar change, comme le changement du numéro de version (learn-web. -0.0 .1-snapshot.jar-->>learn-web-1.0.1-snapshot.jar). Que faut-il faire ? La troisième méthode de déploiement via des scripts est présentée ci-dessous.

6.1 Créer un fichier hellolearn.sh

java -jar /data/learn-web-0.0.1-snapshot.jar
#🎜🎜 #

Téléchargez hellolearn.sh dans /data/docker/hellolearn/scriptdeploy/package. Ce chemin de dossier peut être personnalisé. N'oubliez pas ce chemin de dossier, qui sera utilisé plus tard.

6.2 Ajouter une autorisation d'exécution de script

chmod +x hellolearn.sh

6.3 Créer un fichier docker#🎜🎜# #🎜🎜#cmd ["sh","-c","/data/hellolearn.sh"] signifie démarrer le script hellolearn.sh créé en 6.1 au démarrage du conteneur. #🎜🎜##🎜🎜#Notez que la dernière commande mentionnée ci-dessus est Entrypoint, qui a été modifiée en cmd dans le déploiement du script. Si vous êtes intéressé par la différence spécifique entre Entrypoint et cmd, vous pouvez en savoir plus. #🎜🎜##🎜🎜#6.4 Téléchargez le package jar #🎜🎜##🎜🎜#Placez le package jar dans le même répertoire que hellolearn.sh, c'est-à-dire /data/docker/hellolearn/scriptdeploy/package, lorsque création du conteneur Mappez ensuite ce répertoire (répertoire hôte) au répertoire /data du conteneur. . #🎜🎜##🎜🎜#6.5 Diagramme de la structure du répertoire de fichiers#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Je ne sais pas si vous êtes confus au sujet de la structure du répertoire ici, téléchargez-en un ici. Le diagramme de la structure des répertoires de l'hôte est clair en un coup d'œil. #🎜🎜##🎜🎜#6.6 Créer une image #🎜🎜##🎜🎜##🎜🎜#docker build -t hellolearn-script .#🎜🎜##🎜🎜##🎜🎜#Le point à la fin représente le répertoire courant , la commande pour générer l'image doit donc être exécutée dans le répertoire où se trouve le fichier docker. #🎜🎜##🎜🎜#6.7 Créer et démarrer un conteneur #🎜🎜##🎜🎜##🎜🎜#docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302:8301 hellolearn-script#🎜🎜##🎜🎜#docker start hellolearn-script#🎜🎜#

Associez le répertoire /data/docker/hellolearn/scriptdeploy/package de l'hôte au mappage du répertoire /data du conteneur. Dans ce cas, lorsque le package jar change, mettez simplement à jour le package jar directement dans le répertoire hôte. Même si le nom du package jar change, vous devez toujours mettre à jour le script hellolearn.sh. Redémarrez le conteneur après la mise à jour.

Effet de test Web 6.8

Comment Docker déploie SpringBoot et remplace les packages jar

Afficher les journaux Docker

journaux Docker [options] identifiant du conteneur

description des options :

-f : suivre la sortie du journal
--depuis : afficher une certaine heure de début Tous logs
-t : Afficher l'horodatage
--tail : Répertorier uniquement les n derniers journaux de conteneur

7.1 Afficher les journaux après l'heure spécifiée, afficher uniquement les 100 dernières lignes :

docker logs -f -t -- since= "2020-10-01" --tail=100 conteneur id

7.2 Vérifiez les journaux de la période spécifiée

docker logs -t --since="2020-10-01t19:00:00" -- jusqu'à "2020-10-01t19:00:00" identifiant du conteneur

7.3 Afficher les journaux après l'heure spécifiée :

docker logs -t --since="2020-10-01t19:00:00" identifiant du conteneur

7.4 Afficher les journaux des 5 dernières minutes :

docker logs --since 5m containers id

7.5 Exécuter bash sur le conteneur spécifié via la commande exec :

docker exec hellolearn -it /bin / bash ou docker exec -it hellolearn bash docker exec hellolearn -it /bin/bash 或者 docker exec -it hellolearn bash

7.6 查看docker ip

docker inspect --format='{{.networksettings.ipaddress}}' hellolearn

遇到的问题

问题描述:error response from daemon: driver failed programming external connectivity on endpoint flamboyant_leavitt (iptables failed: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: no chain/target/match by that name.

解决方案:重启docker。 systemctl restart docker

7.6 Afficher docker ip🎜🎜🎜docker inspect --format='{{.networksettings.ipaddress}}' hellolearn🎜🎜

Problèmes rencontrés🎜🎜Description du problème : réponse d'erreur du démon : échec de programmation du pilote pour la connectivité externe sur le point de terminaison flamboyant_leavitt (échec d'iptables : iptables --wait -t nat -a docker -p tcp -d 0/ 0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0 : iptables : pas de chaîne/cible/correspondance de ce nom.🎜🎜Solution : redémarrez docker. systemctl redémarrer le docker🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment lire la version docker Comment lire la version docker Apr 15, 2025 am 11:51 AM

Pour obtenir la version Docker, vous pouvez effectuer les étapes suivantes: exécutez la commande docker "docker --version" pour afficher les versions client et serveur. Pour Mac ou Windows, vous pouvez également afficher les informations de version via l'onglet Version de la GUI de bureau Docker ou du menu de bureau à propos de Docker.

Comment créer un miroir dans Docker Comment créer un miroir dans Docker Apr 15, 2025 am 11:27 AM

Étapes pour créer une image docker: écrivez un dockerfile qui contient les instructions de construction. Créez l'image dans le terminal, en utilisant la commande docker build. Marquez l'image et attribuez des noms et des balises à l'aide de la commande docker tag.

Comment utiliser Docker Desktop Comment utiliser Docker Desktop Apr 15, 2025 am 11:45 AM

Comment utiliser Docker Desktop? Docker Desktop est un outil pour exécuter des conteneurs Docker sur les machines locales. Les étapes à utiliser incluent: 1. Installer Docker Desktop; 2. Démarrer Docker Desktop; 3. Créer une image Docker (à l'aide de DockerFile); 4. Build Docker Image (en utilisant Docker Build); 5. Exécuter Docker Container (à l'aide de Docker Run).

Comment mettre à jour l'image de Docker Comment mettre à jour l'image de Docker Apr 15, 2025 pm 12:03 PM

Les étapes pour mettre à jour une image Docker sont les suivantes: Tirez la dernière étiquette d'image Nouvelle image Supprimer l'ancienne image pour une balise spécifique (facultative) Redémarrez le conteneur (si nécessaire)

Comment vérifier le nom du conteneur Docker Comment vérifier le nom du conteneur Docker Apr 15, 2025 pm 12:21 PM

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment afficher les journaux de Docker Comment afficher les journaux de Docker Apr 15, 2025 pm 12:24 PM

Les méthodes pour afficher les journaux Docker incluent: à l'aide de la commande docker logs, par exemple: docker logs contener_name Utilisez la commande docker exec pour exécuter / bin / sh et afficher le fichier journal, par exemple: docker exec -it contener_name / bin / sh; Cat /var/log/continer_name.log Utilisez la commande docker-compose JORS de Docker Compose, par exemple: docker-compose -f docker-com

Comment changer la source d'image Docker en Chine Comment changer la source d'image Docker en Chine Apr 15, 2025 am 11:30 AM

Vous pouvez passer à la source de miroir domestique. Les étapes sont les suivantes: 1. Modifiez le fichier de configuration /etc/docker/daemon.json et ajoutez l'adresse source miroir; 2. Après enregistrer et sortir, redémarrez le service Docker Sudo Systemctl Docker pour améliorer la vitesse et la stabilité du téléchargement d'image.

Comment copier des fichiers dans Docker à l'extérieur Comment copier des fichiers dans Docker à l'extérieur Apr 15, 2025 pm 12:12 PM

Méthodes de copie de fichiers en hôtes externes dans Docker: Utilisez la commande docker cp: exécuter docker cp [options] & lt; Container Path & gt; & lt; Host Path & gt;. Utilisation de volumes de données: créez un répertoire sur l'hôte et utilisez le paramètre -v pour monter le répertoire dans le conteneur lors de la création du conteneur pour obtenir la synchronisation de fichiers bidirectionnels.

See all articles