Maison >Java >javaDidacticiel >Comment Docker déploie SpringBoot et remplace les packages jar
Créez un fichier dockerfile, qui sera utilisé plus tard.
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).
#🎜 🎜#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. Démarrer le conteneurdocker 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
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.
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
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
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!