Docker sur Windows
Dans ce guide, vous allez déployer MyEMS avec Docker sur un système Windows.
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 c:\
cd c:\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 à l'emplacement c:\myems-upload, puis le monter en liaison directe dans le conteneur, ainsi que le fichier .env :
docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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.
Si vous souhaitez 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 c:\
cd c:\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.
notepad 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 à l'emplacement c:\myems-upload, le monter dans le conteneur, ainsi que le fichier nginx.conf. Le paramètre -v pour le dossier d'upload doit être identique à celui utilisé pour myems-api.
docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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
Si vous souhaitez migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-admin.tar myems/myems-admin
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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 c:\
cd c:\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 qu'administrateur)
docker run -d -v c:\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.
Pour migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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 c:\
cd c:\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 (en tant qu'administrateur)
docker run -d -v c:\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 : Arrière-plan + affichage ID conteneur
- -v : Volume en lecture seule (versions ≤v4.7.0 utiliser /code/.env)
- --log-opt : Gestion des logs
- --restart : Redémarrage automatique
- --name : Nom du conteneur
Le chemin avant : hôte (variable), après : conteneur (non modifiable). Modifications du .env nécessitent un redémarrage du conteneur.
Pour migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-cleaning.tar myems/myems-cleaning
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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 c:\
cd c:\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 (en tant qu'administrateur)
docker run -d -v c:\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 : Arrière-plan + affichage ID conteneur
- -v : Volume en lecture seule (versions ≤v4.7.0 utiliser /code/.env)
- --log-opt : Gestion des logs
- --restart : Redémarrage automatique
- --name : Nom du conteneur
Le chemin avant : hôte (variable), après : conteneur (non modifiable). Modifications du .env nécessitent un redémarrage du conteneur.
Pour migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-normalization.tar myems/myems-normalization
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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 c:\
cd c:\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 (en tant qu'administrateur)
docker run -d -v c:\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 : Arrière-plan + affichage ID conteneur
- -v : Volume en lecture seule (versions ≤v4.7.0 utiliser /code/.env)
- --log-opt : Gestion des logs
- --restart : Redémarrage automatique
- --name : Nom du conteneur
Le chemin avant : hôte (variable), après : conteneur (non modifiable). Modifications du .env nécessitent un redémarrage du conteneur.
Pour migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-aggregation.tar myems/myems-aggregation
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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
notepad src/config.js
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
notepad nginx.conf
- Copier le code source dans le répertoire racine
cp -r myems/myems-web c:\
cd c:\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 le fichier nginx.conf en lecture seule depuis l'hôte :
docker run -d -p 80:80 -v c:\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 : Arrière-plan + affichage ID conteneur
- -p : Publier le port 80 du conteneur sur le port 80 de l'hôte
- -v : Monter nginx.conf en lecture seule
- --log-opt : Gestion des logs
- --restart : Redémarrage automatique
- --name : Nom du conteneur
Si vous souhaitez migrer l'image vers un autre ordinateur
- Exporter l'image en fichier tar
docker save --output myems-web.tar myems/myems-web
- Copier le fichier tar sur l'autre ordinateur, puis importer l'image
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.