Aller au contenu principal

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

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
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 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
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 (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
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 (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
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 (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
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
notepad src/config.js
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
notepad nginx.conf
  • Copier le code source dans le répertoire racine
cp -r myems/myems-web c:\
cd c:\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 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

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.