Перейти к основному контенту

Docker на Windows

В этом руководстве описано, как развернуть MyEMS с использованием Docker на операционной системе Windows.

Предварительные требования

  • Установленные Docker и npm на хост-машине.
  • Установленный сервер MySQL.
  • Возможность подключения к базе данных MySQL с хост-машины, на которой запущен Docker Engine.
  • Требования к аппаратному обеспечению: как минимум 4 ГБ ОЗУ, 20 ГБ свободного места на диске (для базы данных и Docker-контейнеров).

Клонирование исходного кода:

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

Шаг 1: База данных

См. раздел База данных

Шаг 2: myems-api

В этом разделе вы установите myems-api в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-api c:\
cd c:\myems-api
  • Создание файла .env на основе example.env
Предупреждение

Вручную замените 127.0.0.1 на реальный IP-адрес ХОСТА.

cp example.env .env
  • Сборка образа из исходного кода
docker build -t myems/myems-api .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Запуск Docker-контейнера

На хост-машине создайте папку c:\myems-upload, подмонтируйте ее в контейнер, а также подмонтируйте файл .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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -p — публикация порта контейнера на хост-машину, 8000:8000 (Хост:Контейнер) связывает порт 8000 (справа) контейнера с TCP-портом 8000 (слева) хост-машины.

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Абсолютный путь перед двоеточием относится к хост-машине и может отличаться в вашей системе. Абсолютный путь после двоеточия относится к контейнеру и НЕ МОЖЕТ быть изменен. При передаче .env как параметра подмонтирования вы сможете позже изменить значения конфигурации. Если вы изменили файл .env, перезапустите контейнер, чтобы изменения вступили в силу.

Если вам нужно перенести образ на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-api.tar myems/myems-api
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-api.tar

Шаг 3: myems-admin

В этом разделе вы установите myems-admin в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-admin c:\
cd c:\myems-admin
Предупреждение

Вручную замените 127.0.0.1:8000 в nginx.conf на реальный IP-адрес и порт myems-api на хост-машине.

notepad nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Сборка образа из исходного кода
docker build -t myems/myems-admin .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Запуск Docker-контейнера

На хост-машине создайте папку c:\myems-upload, подмонтируйте ее в контейнер, а также подмонтируйте файл nginx.conf: параметр -v для папки upload должен совпадать с параметром, используемым в 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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -p — публикация порта контейнера на хост-машину, 8001:8001 (Хост:Контейнер) связывает порт 8001 (справа) контейнера с TCP-портом 8001 (слева) хост-машины.

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Если вам нужно перенести образ на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-admin.tar myems/myems-admin
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-admin.tar

Шаг 4: myems-modbus-tcp

В этом разделе вы установите myems-modbus-tcp в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
  • Создание файла .env на основе example.env
Предупреждение

Вручную замените 127.0.0.1 на реальный IP-адрес ХОСТА.

cp example.env .env
  • Сборка образа из исходного кода
docker build -t myems/myems-modbus-tcp .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Запуск Docker-контейнера (от имени Администратора)
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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Абсолютный путь перед двоеточием относится к хост-машине и может отличаться в вашей системе. Абсолютный путь после двоеточия относится к контейнеру и НЕ МОЖЕТ быть изменен. При передаче .env как параметра подмонтирования вы сможете позже изменить значения конфигурации. Если вы изменили файл .env, перезапустите контейнер, чтобы изменения вступили в силу.

  • Перенос Docker-контейнера на другой компьютер

Чтобы перенести контейнер на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-modbus-tcp.tar

Шаг 5: myems-cleaning

В этом разделе вы установите myems-cleaning в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
  • Создание файла .env на основе example.env
Предупреждение

Вручную замените 127.0.0.1 на реальный IP-адрес ХОСТА.

cp example.env .env
  • Сборка образа из исходного кода
docker build -t myems/myems-cleaning .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Запуск Docker-контейнера (от имени Администратора)
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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Абсолютный путь перед двоеточием относится к хост-машине и может отличаться в вашей системе. Абсолютный путь после двоеточия относится к контейнеру и НЕ МОЖЕТ быть изменен. При передаче .env как параметра подмонтирования вы сможете позже изменить значения конфигурации. Если вы изменили файл .env, перезапустите контейнер, чтобы изменения вступили в силу.

  • Перенос Docker-контейнера на другой компьютер

Чтобы перенести контейнер на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-cleaning.tar myems/myems-cleaning
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-cleaning.tar

Шаг 6: myems-normalization

В этом разделе вы установите myems-normalization в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
  • Создание файла .env на основе example.env
Предупреждение

Вручную замените 127.0.0.1 на реальный IP-адрес ХОСТА.

cp example.env .env
  • Сборка образа из исходного кода
docker build -t myems/myems-normalization .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Запуск Docker-контейнера (от имени Администратора)
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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Абсолютный путь перед двоеточием относится к хост-машине и может отличаться в вашей системе. Абсолютный путь после двоеточия относится к контейнеру и НЕ МОЖЕТ быть изменен. При передаче .env как параметра подмонтирования вы сможете позже изменить значения конфигурации. Если вы изменили файл .env, перезапустите контейнер, чтобы изменения вступили в силу.

  • Перенос Docker-контейнера на другой компьютер

Чтобы перенести контейнер на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-normalization.tar myems/myems-normalization
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-normalization.tar

Шаг 7: myems-aggregation

В этом разделе вы установите myems-aggregation в Docker.

  • Копирование исходного кода в корневой каталог
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
  • Создание файла .env на основе example.env
Предупреждение

Вручную замените 127.0.0.1 на реальный IP-адрес ХОСТА.

cp example.env .env
  • Сборка образа из исходного кода
docker build -t myems/myems-aggregation .

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Запуск Docker-контейнера (от имени Администратора)
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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Абсолютный путь перед двоеточием относится к хост-машине и может отличаться в вашей системе. Абсолютный путь после двоеточия относится к контейнеру и НЕ МОЖЕТ быть изменен. При передаче .env как параметра подмонтирования вы сможете позже изменить значения конфигурации. Если вы изменили файл .env, перезапустите контейнер, чтобы изменения вступили в силу.

  • Перенос Docker-контейнера на другой компьютер

  • Экспорт образа в tar-архив

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-aggregation.tar

Шаг 8: myems-web

В этом разделе вы установите myems-web в Docker.

  • Редактирование файла config.js:
Примечание

Получите mapboxToken на сайте https://mapbox.com, затем установите showOnlineMap в true. Если вы хотите отключить функцию онлайн-карты, установите showOnlineMap в false.

cd myems/myems-web
notepad src/config.js
Предупреждение

Замените 127.0.0.1:8000 в nginx.conf на реальный IP-адрес и порт myems-api на хост-машине.

cd myems/myems-web
notepad nginx.conf
  • Копирование исходного кода в корневой каталог
cp -r myems/myems-web c:\
cd c:\myems-web
Информация

Вы можете безопасно игнорировать команду 'npm run build' в этом разделе, так как сборка выполняется автоматически в Dockerfile.

  • Сборка образа из исходного кода
docker build -t myems/myems-web .
docker image prune -f

Для сборки образа под несколько платформ (а не только для архитектуры и операционной системы, на которой выполняется сборка) можно использовать buildx и указать флаг --platform для задания целевой платформы (например, linux/amd64, linux/arm64 или darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Запуск Docker-контейнера

На хост-машине подмонтируйте файл nginx.conf:

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 — запуск контейнера в фоновом режиме и вывод ID контейнера

  • -p — публикация порта контейнера на хост-машину, 80:80 (Хост:Контейнер) связывает порт 80 (справа) контейнера с TCP-портом 80 (слева) хост-машины.

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Docker, -v автоматически создает этот конечный точку (всегда как директорию). Опция ro (read-only) делает подмонтированный ресурс доступным в контейнере только для чтения. Для версий v4.7.0 и старше используйте путь '/code/.env' вместо '/app/.env'.

  • --log-opt max-size=2m — максимальный размер журнала перед его ротацией. Положительное целое число с модификатором единицы измерения (k, m или g).

  • --log-opt max-file=2 — максимальное количество файлов журналов, которые могут существовать одновременно. При создании нового файла журнала старый файл удаляется. Положительное целое число.

  • --restart — политика перезапуска контейнера при его завершении

  • --name — присвоение имени контейнеру

Если вам нужно перенести образ на другой компьютер:

  • Экспорт образа в tar-архив
docker save --output myems-web.tar myems/myems-web
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
docker load --input .\myems-web.tar

После установки

Поздравляем! Теперь вы можете войти в административный интерфейс MyEMS Admin UI и веб-интерфейс MyEMS Web UI.

Стандартные порты

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Предположим, что адрес сервера — 192.168.1.8 (замените на реальный адрес сервера): Доступ к MyEMS Web UI по адресу http://192.168.1.8 (порт 80 можно опустить) Доступ к MyEMS Admin UI по адресу http://192.168.1.8:8001

Стандартные пароли

MyEMS Admin UI

Имя пользователя:

administrator

Пароль:

!MyEMS1

MyEMS Web UI

Имя пользователя:

administrator@myems.io

Пароль:

!MyEMS1

Устранение неполадок

Как решить проблему таймаута при скачивании образов

Из-за проблем с сетью интернет-провайдера скачивание образов может происходить медленно. Вы можете использовать сторонние сервисы ускорения.