Aller au contenu principal

Podman sur Linux

Dans ce guide, vous allez déployer MyEMS avec Podman sur un système Linux.

Prérequis

  • Podman et npm installés sur la machine hôte
  • Serveur MySQL installé
  • La base de données MySQL doit être accessible depuis la machine hôte sur laquelle fonctionne le moteur Podman
Attention
  • Il est recommandé d'exécuter les commandes Podman avec des privilèges root
  • Après l'installation de Podman, utilisez la commande systemctl status podman-restart.service pour vérifier si les conteneurs sont configurés pour le démarrage automatique et la politique associée. Si le message Unit not found s'affiche, cela signifie que le conteneur ne pourra pas démarrer automatiquement

Étape 1 Base de données

Voir Base de données

Étape 2 myems-api

Dans cette section, vous allez installer myems-api sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-api /
cd /myems-api
  • Créer le fichier .env à partir du fichier example.env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de la machine hôte

cp example.env .env
  • Construire l'image à partir du code source
podman build -t myems/myems-api .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-api .
  • Lancer un conteneur Podman Sur la machine hôte, créer un dossier partagé pour les fichiers uploadés :
mkdir /myems-upload

Créer un conteneur, monter en liaison le dossier partagé dans le conteneur et monter également le fichier .env en liaison :

podman run -d -p 8000:8000 -v /myems-upload:/var/www/myems-admin/upload -v /myems-api/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -p : Publier le ou les ports du conteneur sur la machine hôte ; 8000:8000 (Hôte:Conteneur) lie le port 8000 (droite) du conteneur au port TCP 8000 (gauche) de la machine hôte
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Le chemin absolu avant le deux-points correspond à la machine hôte (il peut varier selon votre système) ; le chemin absolu après le deux-points correspond au conteneur et ne peut pas être modifié. En passant le fichier .env en paramètre de montage en liaison, vous pourrez modifier ses valeurs de configuration ultérieurement. Si vous modifiez le fichier .env, redémarrez le conteneur pour que les changements prennent effet.

Si vous souhaitez migrer l'image vers un autre ordinateur :

  • Exporter l'image dans un fichier tar
podman save --output myems-api.tar myems/myems-api
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-api.tar

Étape 3 myems-admin

Dans cette section, vous allez installer myems-admin sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-admin /
cd /myems-admin
Attention

Remplacer manuellement 127.0.0.1:8000 dans le fichier nginx.conf par la véritable adresse IP et le port de myems-api sur la machine hôte

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Construire l'image à partir du code source
podman build -t myems/myems-admin .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Lancer un conteneur Podman Sur la machine hôte, créer un dossier partagé pour les fichiers uploadés :
mkdir /myems-upload

Créer un conteneur, monter en liaison le dossier partagé pour les fichiers uploadés dans le conteneur et également monter le fichier nginx.conf en liaison :

podman run -d -p 8001:8001 -v /myems-upload:/var/www/myems-admin/upload -v /myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -p : Publier le ou les ports du conteneur sur la machine hôte ; 8001:8001 (Hôte:Conteneur) lie le port 8001 (droite) du conteneur au port TCP 8001 (gauche) de la machine hôte
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Si vous souhaitez migrer l'image vers un autre ordinateur :

  • Exporter l'image dans un fichier tar
podman save --output myems-admin.tar myems/myems-admin
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-admin.tar

Étape 4 myems-modbus-tcp

Dans cette section, vous allez installer myems-modbus-tcp sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • Créer le fichier .env à partir du fichier example.env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de la machine hôte

cp example.env .env
  • Construire l'image à partir du code source
podman build -t myems/myems-modbus-tcp .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Lancer un conteneur Podman (en tant que superutilisateur)
podman run -d -v /myems-modbus-tcp/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Le chemin absolu avant le deux-points correspond à la machine hôte (il peut varier selon votre système) ; le chemin absolu après le deux-points correspond au conteneur et ne peut pas être modifié. En passant le fichier .env en paramètre de montage en liaison, vous pourrez modifier ses valeurs de configuration ultérieurement. Si vous modifiez le fichier .env, redémarrez le conteneur pour que les changements prennent effet.

  • Migrer le conteneur Podman Pour migrer le conteneur vers un autre ordinateur :
  • Exporter l'image dans un fichier tar
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-modbus-tcp.tar

Étape 5 myems-cleaning

Dans cette section, vous allez installer myems-cleaning sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • Créer le fichier .env à partir du fichier example.env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de la machine hôte

cp example.env .env
  • Construire l'image à partir du code source
podman build -t myems/myems-cleaning .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Lancer un conteneur Podman (en tant que superutilisateur)
podman run -d -v /myems-cleaning/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Le chemin absolu avant le deux-points correspond à la machine hôte (il peut varier selon votre système) ; le chemin absolu après le deux-points correspond au conteneur et ne peut pas être modifié. En passant le fichier .env en paramètre de montage en liaison, vous pourrez modifier ses valeurs de configuration ultérieurement. Si vous modifiez le fichier .env, redémarrez le conteneur pour que les changements prennent effet.

  • Migrer le conteneur Podman Pour migrer le conteneur vers un autre ordinateur :
  • Exporter l'image dans un fichier tar
podman save --output myems-cleaning.tar myems/myems-cleaning
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-cleaning.tar

Étape 6 myems-normalization

Dans cette section, vous allez installer myems-normalization sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-normalization /
cd /myems-normalization
  • Créer le fichier .env à partir du fichier example.env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de la machine hôte

cp example.env .env
  • Construire l'image à partir du code source
podman build -t myems/myems-normalization .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Lancer un conteneur Podman (en tant que superutilisateur)
podman run -d -v /myems-normalization/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Le chemin absolu avant le deux-points correspond à la machine hôte (il peut varier selon votre système) ; le chemin absolu après le deux-points correspond au conteneur et ne peut pas être modifié. En passant le fichier .env en paramètre de montage en liaison, vous pourrez modifier ses valeurs de configuration ultérieurement. Si vous modifiez le fichier .env, redémarrez le conteneur pour que les changements prennent effet.

  • Migrer le conteneur Podman Pour migrer le conteneur vers un autre ordinateur :
  • Exporter l'image dans un fichier tar
podman save --output myems-normalization.tar myems/myems-normalization
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-normalization.tar

Étape 7 myems-aggregation

Dans cette section, vous allez installer myems-aggregation sur Podman.

  • Copier le code source dans le répertoire racine
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • Créer le fichier .env à partir du fichier example.env
cp example.env .env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de la machine hôte

  • Construire l'image à partir du code source
podman build -t myems/myems-aggregation .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Lancer un conteneur Podman (en tant que superutilisateur)
podman run -d -v /myems-aggregation/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Le chemin absolu avant le deux-points correspond à la machine hôte (il peut varier selon votre système) ; le chemin absolu après le deux-points correspond au conteneur et ne peut pas être modifié. En passant le fichier .env en paramètre de montage en liaison, vous pourrez modifier ses valeurs de configuration ultérieurement. Si vous modifiez le fichier .env, redémarrez le conteneur pour que les changements prennent effet.

  • Migrer le conteneur Podman
  • Exporter l'image dans un fichier tar
podman save --output myems-aggregation.tar myems/myems-aggregation
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-aggregation.tar

Étape 8 myems-web

Dans cette section, vous allez installer myems-web sur Podman.

  • Modifier le fichier config.js :
Note

Obtenir le mapboxToken sur https://mapbox.com, puis définir showOnlineMap sur true. Pour désactiver la carte en ligne, mettre showOnlineMap sur false

cd myems/myems-web
nano src/config.js
Attention

Remplacer 127.0.0.1:8000 dans le fichier nginx.conf par la véritable adresse IP et le port de myems-api sur la machine hôte

cd myems/myems-web
nano nginx.conf
  • Copier le code source dans le répertoire racine
cp -r myems/myems-web /
cd /myems-web
Informations

Vous pouvez ignorer sans risque la commande 'npm run build' dans cette section, car la construction est intégrée au Podmanfile

  • Construire l'image à partir du code source
podman build -t myems/myems-web .

Pour construire l'image pour plusieurs plateformes et non uniquement pour l'architecture et le système d'exploitation de la machine depuis laquelle la construction est lancée, vous pouvez utiliser buildx et ajouter l'option --platform pour spécifier la plateforme cible de la sortie (par exemple linux/amd64, linux/arm64 ou darwin/amd64)

podman buildx build --platform=linux/amd64 -t myems/myems-web .
  • Lancer un conteneur Podman Sur la machine hôte, monter le fichier nginx.conf en liaison :
podman run -d -p 80:80 -v /myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
  • -d : Lancer le conteneur en arrière-plan et afficher son ID
  • -p : Publier le ou les ports du conteneur sur la machine hôte ; 80:80 (Hôte:Conteneur) lie le port 80 (droite) du conteneur au port TCP 80 (gauche) de la machine hôte
  • -v : Si vous utilisez -v ou --volume pour monter en liaison un fichier ou dossier qui n'existe pas encore sur l'hôte Podman, -v crée l'endpoint automatiquement (toujours en tant que dossier). L'option ro, si elle est présente, rend le montage en liaison accessible en lecture seule dans le conteneur. Pour les versions v4.7.0 ou antérieures, utilisez '/code/.env' à la place de '/app/.env'
  • --log-opt max-size=2m : Taille maximale du journal avant rotation (entier positif suivi d'un indicateur d'unité : k, m ou g)
  • --log-opt max-file=2 : Nombre maximal de fichiers journaux autorisés ; si la rotation crée trop de fichiers, le fichier le plus ancien est supprimé (entier positif)
  • --restart : Politique de redémarrage appliquée lorsque le conteneur s'arrête
  • --name : Attribuer un nom au conteneur

Si vous souhaitez migrer l'image vers un autre ordinateur :

  • Exporter l'image dans un fichier tar
podman save --output myems-web.tar myems/myems-web
  • Copier le fichier tar sur l'autre ordinateur, puis charger l'image depuis le fichier tar
podman load --input .\myems-web.tar

Post-installation

Félicitations ! Vous pouvez désormais vous connecter aux interfaces MyEMS Admin et MyEMS Web.

Ports par défaut

MyEMS Web UI : 80 MyEMS API : 8000 MyEMS Admin UI : 8001

En supposant que l'adresse du serveur est 192.168.1.8 (remplacez par votre adresse réelle) Accéder à MyEMS Web UI : http://192.168.1.8 (le port 80 peut être omis) Accéder à MyEMS Admin UI : http://192.168.1.8:8001

Mot de passe par défaut

MyEMS Admin UI Identifiant :

administrator

Mot de passe :

!MyEMS1

MyEMS Web UI Identifiant :

administrator@myems.io

Mot de passe :

!MyEMS1

Dépannage