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

Podman на Linux

В этом руководстве описано, как развернуть MyEMS с использованием Podman на Linux.

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

  • Установленные podman и npm на хост-машине.
  • Установленный сервер MySQL.
  • Возможность подключения к базе данных MySQL с хост-машины, на которой запущен Podman Engine.
Предупреждение
  • Рекомендуется выполнять команды podman с правами суперпользователя (root).

  • После установки podman проверьте конфигурацию автоматического запуска контейнеров и политики с помощью команды systemctl status podman-restart.service. Если отображается Unit not found, это означает, что контейнер не будет запускаться автоматически.

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

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

Шаг 2: myems-api

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

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

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

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

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

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

На хост-машине создайте общую папку для загружаемых файлов:

mkdir /myems-upload

Создайте контейнер, подмонтируйте общую папку и файл .env в контейнер:

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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-архив
podman save --output myems-api.tar myems/myems-api
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
podman load --input .\myems-api.tar

Шаг 3: myems-admin

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

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

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

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

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

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

На хост-машине создайте общую папку для загружаемых файлов:

mkdir /myems-upload

Создайте контейнер, подмонтируйте общую папку для загружаемых файлов и файл nginx.conf:

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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-архив
podman save --output myems-admin.tar myems/myems-admin
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
podman load --input .\myems-admin.tar

Шаг 4: myems-modbus-tcp

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

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

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

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

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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, перезапустите контейнер, чтобы изменения вступили в силу.

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

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

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

Шаг 5: myems-cleaning

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

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

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

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

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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, перезапустите контейнер, чтобы изменения вступили в силу.

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

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

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

Шаг 6: myems-normalization

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

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

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

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

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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, перезапустите контейнер, чтобы изменения вступили в силу.

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

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

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

Шаг 7: myems-aggregation

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

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

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

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

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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, перезапустите контейнер, чтобы изменения вступили в силу.

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

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

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

Шаг 8: myems-web

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

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

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

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

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

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

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

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

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

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

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

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

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

  • -v — при использовании -v или --volume для подмонтирования файла или директории, которая еще не существует на хост-машине Podman, -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-архив
podman save --output myems-web.tar myems/myems-web
  • Копирование tar-архива на другой компьютер и загрузка образа из архива
podman 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

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