|
Для стабильной работы сервер должен отвечать следующим требованиям:
операционная система семейства Linux, поддерживающая docker (рекомендуется Ubuntu server 20 и новее);
объем оперативной памяти от 8 ГБ;
процессор, поддерживающий виртуализацию и имеющий от 4-х ядер;
от 40 ГБ свободного места на жестком диске;
наличие сетевого интерфейса 1 Гбит/с.
От имени непривилегированного пользователя необходимо выполнить команду:
echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" | sudo EDITOR='tee -a' visudo |
Далее необходимо ввести пароль. После этого для выполнения команд с sudo или перехода в режим суперпользователя дополнительный ввод пароля не потребуется.
Наиболее простой и быстрый способ установки — воспользоваться скриптом с официального сайта :
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh |
Это позволит работать с docker без использования sudo:
sudo usermod -aG docker $(whoami) |
После этого необходимо повторно авторизоваться в системе.
Docker-compose — отдельный проект от docker, поэтому для получения свежей версии его нужно скачать с github:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
Файлы, необходимые для запуска ECCM, нужно распаковать в директорию /opt/eccm :
docker-compose.yml .env data/postgres-eccm/postgresql.conf data/postgres-eccm/init-db/init-db.sql |
В файле .env находятся переменные, определяющие поведение проекта. В таблице 1 представлен перечень данных переменных.
Таблица 1 — Переменные, определяющие поведение проекта
Переменная | Значение по умолчанию | Описание |
---|---|---|
COMPOSE_PROJECT_NAME | eccm | Название проекта в docker-compose (используется для идентификации, в случае если на сервере запущено несколько проектов). |
ECCM_PROFILE | production | |
ECCM_TAG | 1.2 | |
ECCM_REGISTRY | hub.eltex-co.ru | Адрес docker-registry, с которого будет выполняться получение образов системы. Если используется локальное зеркало, то можно указать его адрес. |
ECCM_INTERNAL_SUBNETWORK | 172.18.0.0/24 | Внутренняя подсеть (используется для запуска контейнеров). |
ECCM_WEB_ADDRESS | yourserver.ru | Адрес, на котором будет работать web-интерфейс системы. |
ECCM_WEB_PORT | 80 | Порт для доступа к web-интерфейсу. |
ECCM_BACKBONE_ADDRESS | yourserver.ru | Адрес ECCM в сети управления устройствами. |
ECCM_TIMEZONE | Asia/Novosibirsk | Временной пояс, в котором работает система (указывается в соответствии с tz database, например Asia/Novosibirsk). |
ECCM_LOGLEVEL | 'INFO' | Уровень логирования в проекте. |
MAX_PARALLEL_TASKS | 4 | Количество одновременно выполняемых операций с устройствами. |
POSTGRES_USER | Параметр, позволяющий переопределить дефолтный логин для доступа к базе данных. | |
POSTGRES_PASSWORD | Параметр, позволяющий переопределить дефолтный пароль для доступа к базе данных. |
Файл содержит параметры, влияющие на производительность базы данных. Настройки по умолчанию достаточны для тестового запуска и поддержки около 100 устройств. Инструкции по изменению конфигурации можно найти на странице ECCM на сайте https://eltex-co.ru/ или в службе технической поддержки ELTEX.
Скрипт для инициализации базы данных. Необходим при первом запуске системы, вносить изменения в него нельзя.
Для запуска проекта нужно перейти в директорию с файлами и выполнить команду:
docker-compose up -d |
Пример вывода на консоль при успешном запуске:
$ docker-compose up -d Creating eccm_rabbitmq-service_1 ... done Creating eccm_monitoring-service-worker_1 ... done Creating eccm_monitoring-service_1 ... done Creating eccm_postgres-eccm_1 ... done Creating eccm_postgres-monitoring-bouncer_1 ... done Creating eccm_identity-provider_1 ... done Creating eccm_configurator_1 ... done Creating eccm_monitoring-server_1 ... done Creating eccm_hydra_1 ... done Creating eccm_monitoring-web_1 ... done Creating eccm_oathkeeper-proxy_1 ... done Creating eccm_data-presenter_1 ... done Creating eccm_polemarch_1 ... done Creating eccm_monitoring-adapter_1 ... done Creating eccm_device-manager_1 ... done Creating eccm_diff-checker_1 ... done Creating eccm_license-manager_1 ... done Creating eccm_backend-ui_1 ... done Creating eccm_upgrade-finish-checker_1 ... done Creating eccm_git-connector_1 ... done Creating eccm_upgrader_1 ... done Creating eccm_communicator_1 ... done Creating eccm_web-gui_1 ... done Creating eccm_cron-manager_1 ... done |
Для остановки проекта выполните команду:
docker-compose down |
Для подключения к web-интерфейсу ECCM нужно ввести в браузере следующий адрес:
http://<IP-адрес вашего сервера (ECCM_WEB_ADDRESS)>/ |
Учетные данные, используемые по умолчанию: логин 'eccm', пароль 'eccm' .
ERROR: Couldn't connect to Docker daemon at http+[docker://localhost](docker://localhost) - is it running?
Возможная причина: docker-демон не запущен. Для проверки нужно выполнить команду:
systemctl status docker |
Если в строке Active статус отличается от Active (running), значит проблема заключается в этом.
Решение: Запустить docker командой:
sudo systemctl start docker |
Got permission denied while trying to connect to the Docker daemon socket at [unix:///var/run/docker.sock](unix://intdocs.eltex.loc/var/run/docker.sock): Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied
Возможная причина: запуск производился от непривилегированного пользователя, который не был добавлен в группу docker.
Решения:
Предпочтительное: добавить пользователя в группу docker. Это можно сделать командой:
sudo usermod -aG docker $(whoami) |
Выполнять все операции с привилегиями root.
Services starting...
Creating network "eccm_eltex-internal" with the default driver
ERROR: Pool overlaps with other one on this address space
Возможная причина: подсеть, указанная в ECCM_INTERNAL_SUBNETWORK, уже используется докером.
Решение: Необходимо выбрать другую подсеть в файле .env. Посмотреть уже созданные докером подсети можно с помощью команды:
docker network inspect $(docker network ls --filter "DRIVER=bridge" --format '{{ .Name }}') -f '{{ .Name }} {{ (index .IPAM.Config 0).Subnet }}' |
ERROR: error while removing network: network eccm_eltex-internal id 324bd72dd9c107cf2ea48effb75d9e7ad2dfbc8f5f7317b89cd7f318d61d5c4b has active endpoints
Возможная причина: docker не полностью очистил кэш.
Решение: перезапуск docker с помощью команды:
sudo systemctl restart docker |