Aller au contenu principal

Docker sur Linux/macOS

Dans ce guide, vous allez déployer MyEMS avec Docker sur un système Linux (ou macOS).

Prérequis

  • Docker et npm installés sur l'hôte.
  • Serveur MySQL installé.
  • La base de données MySQL doit être accessible depuis l'hôte sur lequel fonctionne le moteur Docker.
  • Exigences matérielles : au moins 4 Go de RAM, 20 Go d'espace de stockage (pour la base de données et les conteneurs Docker).

Cloner le code source :

cd ~
git clone https://github.com/myems/myems

Étape 1 Base de données

Voir Base de données

Étape 2 myems-api

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

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

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de l'hôte.

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

Pour construire l'image pour plusieurs plateformes (et non pas uniquement pour l'architecture et le système d'exploitation de l'hôte d'exécution), vous pouvez utiliser buildx et ajouter le drapeau --platform pour spécifier la plateforme cible (par exemple linux/amd64, linux/arm64 ou darwin/amd64) :

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Lancer un conteneur Docker Sur l'hôte, créer un dossier partagé pour les téléchargements :
mkdir /myems-upload

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

docker 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 port du conteneur sur l'hôte (8000:8000 = Hôte:Conteneur, relie le port 8000 du conteneur au port 8000 TCP de l'hôte)
  • -v : Crée le point de montage si il n'existe pas (toujours en tant que dossier). L'option ro monte le fichier en lecture seule. Pour les versions ≤ v4.7.0, utiliser '/code/.env' au lieu de '/app/.env'.
  • --log-opt max-size=1m : Taille maximale du fichier de logs avant rotation (valeur entière + unité k/m/g)
  • --log-opt max-file=2 : Nombre maximal de fichiers de logs conservés (le plus ancien est supprimé quand la limite est atteinte)
  • --restart : Politique de redémarrage du conteneur en cas d'arrêt
  • --name : Affecter un nom au conteneur

Le chemin absolu avant le deux-points correspond à l'hôte (peut varier selon votre configuration) ; celui après est celui du conteneur (ne peut pas être modifié). En montant le fichier .env, vous pouvez modifier la configuration ultérieurement et redémarrer le conteneur pour appliquer les changements.

  • Migrer l'image vers un autre ordinateur Exporter l'image en fichier tar :
docker save --output myems-api.tar myems/myems-api

Copier le fichier tar sur l'autre ordinateur, puis importer l'image :

docker load --input ./myems-api.tar

Étape 3 myems-admin

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

  • 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 nginx.conf par la véritable adresse IP et le port de myems-api sur l'hôte.

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

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Lancer un conteneur Docker Sur l'hôte, créer un dossier partagé pour les téléchargements :
mkdir /myems-upload

Créer le conteneur et monter le dossier de téléchargements ainsi que nginx.conf :

docker 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 en arrière-plan et afficher l'ID du conteneur

  • -p : Publier le port 8001 du conteneur sur le port 8001 de l'hôte

  • -v : Monter les volumes en lecture seule (chemin hôte : chemin conteneur, non modifiable pour le conteneur)

  • --log-opt : Configuration de la rotation des logs

  • --restart : Politique de redémarrage automatique

  • --name : Nom du conteneur

  • Migrer l'image vers un autre ordinateur Exporter l'image :

docker save --output myems-admin.tar myems/myems-admin

Importer l'image sur l'autre ordinateur :

docker load --input ./myems-admin.tar

Étape 4 myems-modbus-tcp

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

  • 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 de example.env
Attention

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de l'hôte.

cp example.env .env
  • Construire l'image
docker build -t myems/myems-modbus-tcp .

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Lancer le conteneur (en tant que superutilisateur)
docker 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 : Arrière-plan + affichage ID conteneur
  • -v : Volume en lecture seule (pour versions ≤v4.7.0, utiliser /code/.env)
  • --log-opt : Gestion des logs
  • --restart : Redémarrage automatique
  • --name : Nom du conteneur

Le chemin avant : correspond à l'hôte, après : au conteneur (non modifiable). Modifications du .env nécessitent un redémarrage du conteneur.

  • Migrer l'image Exporter :
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp

Importer :

docker load --input ./myems-modbus-tcp.tar

Étape 5 myems-cleaning

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

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

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de l'hôte.

cp example.env .env
  • Construire l'image
docker build -t myems/myems-cleaning .

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Lancer le conteneur (superutilisateur)
docker 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
  • Migrer l'image Exporter :
docker save --output myems-cleaning.tar myems/myems-cleaning

Importer :

docker load --input ./myems-cleaning.tar

Étape 6 myems-normalization

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

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

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de l'hôte.

cp example.env .env
  • Construire l'image
docker build -t myems/myems-normalization .

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Lancer le conteneur (superutilisateur)
docker 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
  • Migrer l'image Exporter :
docker save --output myems-normalization.tar myems/myems-normalization

Importer :

docker load --input ./myems-normalization.tar

Étape 7 myems-aggregation

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

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

Remplacer manuellement 127.0.0.1 par la véritable adresse IP de l'hôte.

cp example.env .env
  • Construire l'image
docker build -t myems/myems-aggregation .

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Lancer le conteneur (superutilisateur)
docker 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
  • Migrer l'image Exporter :
docker save --output myems-aggregation.tar myems/myems-aggregation

Importer :

docker load --input ./myems-aggregation.tar

Étape 8 myems-web

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

  • 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
  • Modifier le fichier nginx.conf
Attention

Remplacer manuellement 127.0.0.1:8000 dans nginx.conf par la véritable adresse IP et le port de myems-api sur l'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 la commande 'npm run build' dans cette section : elle est intégrée directement dans le Dockerfile.

  • Construire l'image
docker build -t myems/myems-web .
docker image prune -f

Pour plusieurs plateformes :

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Lancer le conteneur Monter nginx.conf en lecture seule sur l'hôte :
docker 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
  • Migrer l'image Exporter :
docker save --output myems-web.tar myems/myems-web

Importer :

docker 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

Comment résoudre les délais d'attente lors du téléchargement des images

En raison de problèmes de réseau de votre fournisseur d'accès, le téléchargement des images peut être lent. Vous pouvez utiliser des services d'accélération tiers.