Ga naar de hoofdinhoud

Docker op Linux/macOS

In deze handleiding wordt uitgelegd hoe je MyEMS met Docker op Linux (of macOS) installeert.

Vereisten

  • Docker en npm zijn geïnstalleerd op de host.
  • MySQL-server is geïnstalleerd.
  • De MySQL-database moet bereikbaar zijn vanaf de host waarop de Docker Engine draait.
  • Hardwarevereisten: minimaal 4GB RAM, 20GB opslagruimte (database en Docker-container).

Kloon de broncode:

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

Stap 1 Database

Zie Database

Stap 2 myems-api

In deze sectie installeer je myems-api in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-api /
cd /myems-api
  • Maak een .env-bestand op basis van het example.env-bestand
Voorzichtigheid

Vervang handmatig 127.0.0.1 door het werkelijke HOST IP-adres.

cp example.env .env
  • Bouw een image op basis van de broncode
docker build -t myems/myems-api .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Start een Docker-container

Maak op de host een gedeelde uploadmap aan:

mkdir /myems-upload

Maak een container, koppel de gedeelde map aan de container en koppel ook het .env-bestand aan de container:

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 Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 8000:8000 (Host:Container) binds port 8000 (right) of the container to TCP port 8000 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Het absolute pad vóór de dubbele punt is het pad op de host en kan per systeem verschillen. Het absolute pad na de dubbele punt is het pad in de container en kan NIET worden gewijzigd. Door .env als bind-mountparameter mee te geven, kun je later de configuratiewaarden aanpassen. Als je het .env-bestand wijzigt, herstart dan de container om de wijziging door te voeren.

Als je de image naar een andere computer wilt overzetten:

  • Exporteer de image naar een tar-bestand
docker save --output myems-api.tar myems/myems-api
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-api.tar

Stap 3 myems-admin

In deze sectie installeer je myems-admin in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-admin /
cd /myems-admin
Voorzichtigheid

Vervang handmatig 127.0.0.1:8000 in nginx.conf door het werkelijke HOST IP-adres en poort van myems-api

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Bouw een image op basis van de broncode
docker build -t myems/myems-admin .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Start een Docker-container

Maak op de host een gedeelde uploadmap aan:

mkdir /myems-upload

Maak een container, koppel de gedeelde uploadmap aan de container en koppel ook nginx.conf aan de container

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 Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 8001:8001 (Host:Container) binds port 8001 (right) of the container to TCP port 8001 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Als je de image naar een andere computer wilt overzetten:

  • Exporteer de image naar een tar-bestand
docker save --output myems-admin.tar myems/myems-admin
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-admin.tar

Stap 4 myems-modbus-tcp

In deze sectie installeer je myems-modbus-tcp in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • Maak een .env-bestand op basis van het example.env-bestand
Voorzichtigheid

Vervang handmatig 127.0.0.1 door het werkelijke HOST IP-adres.

cp example.env .env
  • Bouw een image op basis van de broncode
docker build -t myems/myems-modbus-tcp .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Start een Docker-container (uitvoeren als superuser)
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 Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Het absolute pad vóór de dubbele punt is het pad op de host en kan per systeem verschillen. Het absolute pad na de dubbele punt is het pad in de container en kan NIET worden gewijzigd. Door .env als bind-mountparameter mee te geven, kun je later de configuratiewaarden aanpassen. Als je het .env-bestand wijzigt, herstart dan de container om de wijziging door te voeren.

  • Docker-container migreren

Om de container naar een andere computer te migreren:

  • Exporteer de image naar een tar-bestand
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-modbus-tcp.tar

Stap 5 myems-cleaning

In deze sectie installeer je myems-cleaning in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • Maak een .env-bestand op basis van het example.env-bestand
Voorzichtigheid

Vervang handmatig 127.0.0.1 door het werkelijke HOST IP-adres.

cp example.env .env
  • Bouw een image op basis van de broncode
docker build -t myems/myems-cleaning .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Start een Docker-container (uitvoeren als superuser)
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
  • -d Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Het absolute pad vóór de dubbele punt is het pad op de host en kan per systeem verschillen. Het absolute pad na de dubbele punt is het pad in de container en kan NIET worden gewijzigd. Door .env als bind-mountparameter mee te geven, kun je later de configuratiewaarden aanpassen. Als je het .env-bestand wijzigt, herstart dan de container om de wijziging door te voeren.

  • Docker-container migreren

Om de container naar een andere computer te migreren:

  • Exporteer de image naar een tar-bestand
docker save --output myems-cleaning.tar myems/myems-cleaning
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-cleaning.tar

Stap 6 myems-normalization

In deze sectie installeer je myems-normalization in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-normalization /
cd /myems-normalization
  • Maak een .env-bestand op basis van het example.env-bestand
Voorzichtigheid

Vervang handmatig 127.0.0.1 door het werkelijke HOST IP-adres.

cp example.env .env
  • Bouw een image op basis van de broncode
docker build -t myems/myems-normalization .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Start een Docker-container (uitvoeren als superuser)
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
  • -d Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Het absolute pad vóór de dubbele punt is het pad op de host en kan per systeem verschillen. Het absolute pad na de dubbele punt is het pad in de container en kan NIET worden gewijzigd. Door .env als bind-mountparameter mee te geven, kun je later de configuratiewaarden aanpassen. Als je het .env-bestand wijzigt, herstart dan de container om de wijziging door te voeren.

  • Docker-container migreren

Om de container naar een andere computer te migreren:

  • Exporteer de image naar een tar-bestand
docker save --output myems-normalization.tar myems/myems-normalization
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-normalization.tar

Stap 7 myems-aggregation

In deze sectie installeer je myems-aggregation in Docker.

  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • Maak een .env-bestand op basis van het example.env-bestand
cp example.env .env
Voorzichtigheid

Vervang handmatig 127.0.0.1 door het werkelijke HOST IP-adres.

  • Bouw een image op basis van de broncode
docker build -t myems/myems-aggregation .

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Start een Docker-container (uitvoeren als superuser)
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
  • -d Run container in background and print container ID

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Het absolute pad vóór de dubbele punt is het pad op de host en kan per systeem verschillen. Het absolute pad na de dubbele punt is het pad in de container en kan NIET worden gewijzigd. Door .env als bind-mountparameter mee te geven, kun je later de configuratiewaarden aanpassen. Als je het .env-bestand wijzigt, herstart dan de container om de wijziging door te voeren.

  • Docker-container migreren

  • Exporteer de image naar een tar-bestand

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-aggregation.tar

Stap 8 myems-web

In deze sectie installeer je myems-web in Docker.

  • Pas het config.js-bestand aan:
Notitie

Haal de mapboxToken op via https://mapbox.com en stel showOnlineMap in op true. Wil je de online kaartfunctie uitschakelen, stel showOnlineMap dan in op false

cd myems/myems-web
nano src/config.js
  • Pas het nginx.conf-bestand aan:
Voorzichtigheid

Vervang 127.0.0.1:8000 in nginx.conf door het werkelijke HOST ip-adres en poort van myems-api

cd myems/myems-web
nano nginx.conf
  • Kopieer de broncode naar de hoofdmap
cp -r myems/myems-web /
cd /myems-web
Informatie

Je kunt het commando 'npm run build' in deze sectie gerust negeren, want dit is ingebouwd in het Dockerfile

  • Bouw een image op basis van de broncode
docker build -t myems/myems-web .
docker image prune -f

Om te bouwen voor meerdere platforms en niet alleen voor de architectuur en het besturingssysteem waarop de gebruiker de build uitvoert. Je kunt buildx gebruiken en de --platform-vlag instellen om het doelsysteem voor de build-output te specificeren (bijvoorbeeld linux/amd64, linux/arm64 of darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Start een Docker-container

Koppel op de host nginx.conf aan de container

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
  • -d Run container in background and print container ID

  • -p Publish a container's port(s) to the host, 80:80 (Host:Container) binds port 80 (right) of the container to TCP port 80 (left) of the host machine.

  • -v If you use -v or --volume to bind-mount a file or directory that does not yet exist on the Docker host, -v creates the endpoint for you. It is always created as a directory. The ro option, if present, causes the bind mount to be mounted into the container as read-only. For v4.7.0 or earlier versions, use '/code/.env' instead of '/app/.env'.

  • --log-opt max-size=2m The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g).

  • --log-opt max-file=2 The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. A positive integer.

  • --restart Restart policy to apply when a container exits

  • --name Assign a name to the container

Als je de image naar een andere computer wilt overzetten:

  • Exporteer de image naar een tar-bestand
docker save --output myems-web.tar myems/myems-web
  • Kopieer het tar-bestand naar een andere computer en laad de image vanuit het tar-bestand
docker load --input .\myems-web.tar

Na installatie

Gefeliciteerd! Je kunt nu inloggen op de MyEMS Admin UI en Web UI.

Standaardpoorten

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

Stel dat het serveradres 192.168.1.8 is (vervang dit door het werkelijke serveradres) Toegang tot MyEMS Web UI via http://192.168.1.8 (poort 80 kan worden weggelaten) Toegang tot MyEMS Admin UI via http://192.168.1.8:8001

Standaardwachtwoorden

MyEMS Admin UI

Gebruikersnaam:

administrator

Wachtwoord:

!MyEMS1

MyEMS Web UI

Gebruikersnaam:

administrator@myems.io

Wachtwoord:

!MyEMS1

Problemen oplossen

Hoe los je problemen met image pull time-out op

Door netwerkproblemen bij de provider kan het downloaden van images traag verlopen. Je kunt gebruikmaken van externe versnellingsdiensten.