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