Comment Docker déploie SpringBoot et remplace les packages jar
Répertoire du projet
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).
Générer une image
#🎜 🎜#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.docker build -t hellolearn .
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
dé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 conteneurdocker 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.Dans 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.shjava -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
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

É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? 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).

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)

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").

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

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.

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.
