Utilisez Docker, Docker-compose pour déployer des microservices
- 1. Utiliser le déploiement Docker
- 2. Utilisez docker-compose pour déployer
-
- 1. Préparez le package jar et le fichier docker pour le service
- 2. Écrivez le fichier docker-compose.yml
- 3. Commandes courantes pour docker-compose
- 4. Arrêter le service (y compris la suppression)
- 5. Démarrez le conteneur de services
- 6. Fermez le conteneur de service
- 7. Redémarrez le conteneur de services
1. Utiliser le déploiement Docker
1. Préparez-vous
Ici, Redis et nacos ont été installés et démarrés dans docker, et le fichier "ruoyi-gateway-prod.yml" a été configuré.
Notez que s'il existe des informations de connexion telles que Redis, MySQL et nacos dans le fichier de configuration, vous devez remplacer l'adresse IP par l'adresse du réseau public ou l'adresse intranet du serveur, et la connexion n'échouera pas.
2. Téléchargez le package jar
Ici, je prends comme exemple le service de passerelle de la version du micro-service Ruoyi et je le télécharge dans le répertoire spécifié.
3. Écrivez le fichier docker
Documentation officielle :
https://docs.docker.com/engine/reference/builder/
L'anglais semble un peu difficile, Ruoyi a un tutoriel de chinois ici
Voici l'adresse du document de Zoé :
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile
Obtenez d'abord l'image de base nécessaire pour construire l'image, c'est-à-dire l'image jdk, et regardez d'abord les images jdk
docker search openjdk
Voici l'image de jdk8
docker pull openjdk:8-jre
Je l'ai déjà récupéré, cela pourrait être un peu plus lent la première fois.
Créez ensuite un fichier nommé dockerfile, le nom du fichier peut être personnalisé, généralement c'est dockerfile, le contenu est le suivant :
# 基础镜像
FROM openjdk:8-jre
# author
LABEL author="gan"
# 创建目录
RUN mkdir -p /home/jar
# 指定路径,后面运行的jar包就是在这个目录
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar
# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar
# 启动网关服务jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]
Télécharger dans le même répertoire que le package jar
Si vous souhaitez copier plusieurs fichiers dans le conteneur, vous pouvez le faire
3. Créez des images et des conteneurs
Construisez l'image miroir dans le répertoire courant. Notez que le "." suivant n'est pas redondant. La commande est la suivante :
docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .
expliquer:
-f : suivi du chemin du fichier docker
-t : étiquette l'image construite, qui est le nom de l'image construite
Avis:
La commande pour exécuter l'image de construction doit être dans le répertoire où se trouve le fichier docker, car la commande "COPY" du fichier docker ne peut être que dans un répertoire relatif par rapport au fichier docker, et une erreur sera signalée si le répertoire absolu de l'hôte est utilisé pour construire.
Les résultats d'exécution sont les suivants :
La build a réussi, car je l'ai déjà construite avec succès auparavant, et elle peut être différente de la première build.
Démarrez ensuite le miroir, la commande est la suivante :
docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway
expliquer:
–name : suivi du nom du conteneur, qui est le même que le nom de l'image ici
-p : suivi du mappage de port entre l'hôte et le conteneur, avant : : est le port du serveur, après : : est le
dernier port du conteneur Seata est le nom de l'image
Vous pouvez voir que le conteneur est en cours d'exécution.
2. Utilisez docker-compose pour déployer
L'utilisation de docker-compose pour déployer des services est basée sur le déploiement de docker, l'ajout de fichiers docker-compose.yml pour gérer les conteneurs de services de manière unifiée et l'implémentation d'une commande pour démarrer ou fermer tous les conteneurs de services. Ainsi, pour utiliser le déploiement de docker-compose, vous doit d'abord apprendre à utiliser le déploiement docker , est une méthode de déploiement confortable qui est gênante au début et confortable à un stade ultérieur.
Ruoyi propose également des tutoriels connexes :
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose
1. Préparez le package jar et le fichier docker pour le service
Sur la base de la conservation du package jar et du dockerfile de la passerelle dans Ruoyi, ajoutez le package jar et le dockerfile d'auth. Le dockerfile d'auth est similaire à la passerelle, comme suit :
# 基础镜像
FROM openjdk:8-jre
# author
LABEL author="gan"
# 创建目录
RUN mkdir -p /home/jar
# 指定路径
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar
# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 启动系统服务
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]
Télécharger vers le dossier spécifié
2. Écrivez le fichier docker-compose.yml
La version docker correspondant au fichier docker-compose.yml sur le site officiel
Voici ma version Docker :
La version du fichier de mon docker-compose.yml est donc 3.8.
Il n'y a que du contenu lié à la passerelle et à l'authentification dans le fichier, comme suit :
# 描述 Compose 文件的版本信息
version : '3.8'
# 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
services:
ruoyi-gateway: # 服务名称,跟构建镜像名称有关,假如image值为空,那么生成的镜像名称为“docker-compose.yml文件所在目录名称_ruoyi-gateway”,我放在jar目录,生成的镜像名称就是jar_ruoyi-gateway
image: ruoyi-gateway # 构建镜像名称
container_name: ruoyi-gateway # 容器名称
build:
context: ./gateway # 构建镜像的jar包和dockerfile文件所在的目录(相对于docker-compose.yml文件,我这里gateway目录是跟docker-compose.yml文件同一目录)
dockerfile: dockerfile # 构建网关镜像的文件名称
ports:
- "8010:8010" # 构建容器端口号,“:”前为宿主机端口,“:”后为容器端口
ruoyi-auth:
image: ruoyi-auth
container_name: ruoyi-auth
build:
context: ./auth
dockerfile: dockerfile
ports:
- "9200:9200"
Une fois le fichier écrit, téléchargez-le dans le répertoire spécifié
3. Commandes courantes pour docker-compose
(1) Créez un miroir au premier plan et démarrez le conteneur
Semblable à l'utilisation de la commande java -jar pour démarrer le package jar, veillez à l'exécuter dans le répertoire où se trouve le fichier docker-compose.yml, la commande est la suivante :
docker-compose up
Une fois la fenêtre fermée, le service s'arrêtera. Il peut être utilisé lors du premier démarrage du service. Le nom du service est à l'extrême gauche. Si chaque service ne voit pas l'erreur de journal, cela signifie que le démarrage a réussi. .
Ctrl+C pour quitter, mais même s'il est fermé, l'image et le conteneur créés existent toujours
(2) Créez un miroir en arrière-plan et démarrez le conteneur
Il faut également l'exécuter dans le répertoire où se trouve le fichier docker-compose.yml. La commande est la suivante :
docker-compose up -d
Vous pouvez également préciser le chemin du fichier docker-compose.yml, la commande est la suivante :
docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d
L'exécution n'imprimera pas le journal de chaque démarrage de service, vous devez afficher le journal, vous pouvez utiliser la commande suivante pour l'afficher
docker-compose logs
Si vous souhaitez uniquement voir le journal du service ruoyi-auth, vous pouvez utiliser la commande suivante
journaux docker-compose ruoyi-auth
(3), afficher le conteneur démarré
Vous pouvez visualiser tous les conteneurs démarrés par le fichier docker-compose.yml, la commande est la suivante :
docker-compose ps
Vous pouvez également spécifier le nom du service, par exemple, exécuter pour voir si ruoyi-auth est démarré, la commande est la suivante :
docker-compose ps ruoyi-auth
Notez qu'il ne peut être exécuté que dans le répertoire où se trouve le fichier docker-compose.yml, et une erreur sera signalée lors de son exécution dans d'autres répertoires.
4. Arrêter le service (y compris la suppression)
Pour arrêter et supprimer tous les conteneurs de services sans supprimer l'image, la commande est la suivante :
docker-compose down
Vous pouvez voir que l'image est toujours là, mais le conteneur correspondant a été supprimé.
Pour visualiser l'image correspondant au conteneur de service, la commande est la suivante :
docker-compose images
Arrêtez et supprimez les conteneurs, réseaux et miroirs de tous les services du projet. La commande est la suivante :
docker-compose down --rmi all
Cette méthode peut être utilisée pour arrêter si le package jar est à nouveau téléchargé.
5. Démarrez le conteneur de services
Démarrez les conteneurs de tous les services du projet, la commande est la suivante :
docker-compose start
Vous pouvez également ajouter le nom du conteneur à la commande ci-dessus pour démarrer le conteneur spécifié. Par exemple, je démarre uniquement le conteneur de passerelle. La commande est la suivante :
docker-compose start ruoyi-gateway
6. Fermez le conteneur de service
Fermez tous les conteneurs de services du projet, la commande est la suivante :
docker-compose stop
Vous pouvez également ajouter le nom du conteneur à la commande ci-dessus pour fermer le conteneur spécifié. Par exemple, je ferme uniquement le conteneur d'authentification. La commande est la suivante :
docker-compose stop ruoyi-auth
7. Redémarrez le conteneur de services
Redémarrez tous les conteneurs de services du projet, la commande est la suivante :
docker-compose restart
Vous pouvez également ajouter le nom du conteneur à la commande ci-dessus pour redémarrer le conteneur spécifié. Par exemple, je redémarre uniquement le conteneur d'authentification. La commande est la suivante :
docker-compose restart ruoyi-auth