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