Установка Citeck c помощью Docker Compose

Системные требования

  • Windows 11 64bit: Home, Pro, Enterprise или Education версии 21H2 или выше.

  • Windows 10 64bit: Home или Pro 21H1 (сборка 19043) или выше, Enterprise или Education 20H2 (сборка 19042) или выше

  • Включите функцию WSL 2 в Windows. Подробные инструкции см. в документации Microsoft.

  • Для успешного запуска WSL 2 в Windows 10 или Windows 11 необходимы следующие предварительные требования к оборудованию:

    • 64-битный процессор с трансляцией адресов второго уровня (SLAT)

    • Не менее 16 ГБ оперативной памяти.

    • 80 Гб свободного дискового пространства.

    • Поддержка аппаратной виртуализации на уровне BIOS должна быть включена в настройках BIOS. Дополнительные сведения см. в разделе Виртуализация

  • Загрузить и установить пакет обновления ядра Linux

Официальное руководстов по установке Docker на Windows

Примечание

Клонировать репозиторий и запускать скрипты необходимо из-под Ubuntu

Установка и запуск проекта

Важно

Комплект поставляется с предзаполненными демонстрационными данными.

Для отключения данной настройки перед разворачиванием стенда перейдите в папку \services\environments в файлах ecos-microservices-postgresql.env и mongodb-app.env в настройке WITH_DEMO_DATA укажите false.

  • Установите Docker и Docker Compose на Вашу ОС

  • Клонируйте репозиторий:

    git clone https://github.com/citeck/ecos-community-demo.git
    
  • В терминале:

  • перейдите в папку с клонированным репозиторием:

    cd полный путь до папки
    
  • запустите:

    docker-compose up -d
    
  • Подождите некоторое время (в зависимости от мощности системы) для того, чтобы система запустилась.

  • Перейдите в браузере по адресу http://localhost/

  • Войдите в систему, используя следующие учётные данные:

../_images/09.png
Username: admin
Password: admin
  • При первом развертывании keycloak попросит сменить пароль:

../_images/10.png

Если необходимо еще раз сменить пароль, то см. инструкцию

  • Далее станет доступна домашняя страница Citeck:

../_images/11.png

Примечание

При первом запуске в течение первых 5 минут после успешной установки и входа в систему может возникать ошибка:

../_images/08.png

Развертывание и запуск Citeck продолжается, необходимо подождать.

Обновление до последнего релиза

В терминале:

  • Остановите Citeck:

    docker-compose down
    
  • Перейдите в папку ecos-community-demo:

    cd полный путь до папки ecos-community-demo
    
  • Получите актуальную версию Citeck:

    git pull
    
  • Загрузите последние версии образов:

    docker-compose pull
    
  • Запустите:

    docker-compose up -d
    

Подготовка окружения и установка Citeck

Обновить систему и пакеты до последней актуальной версии:

yum update -y && yum upgrade -y

Отключить SELinux и перезагрузить сервер:

sed -i 's/enforcing/disabled/g' /etc/selinux/config
reboot

Установить Python:

yum install epel-release -y
yum install python3 -y && yum install python3-pip -y

Установить пакеты для комфортной работы:

yum install -y mc yum-utils nano ethtool ntp ntpdate firewalld lvm2 device-mapper-persistent-data htop fail2ban mc wget screen pigz

Установить Docker Engine:

yum-config-manager --add-repo https://http://download.docker.com /linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli http://containerd.io
systemctl enable docker && systemctl start docker

Установить Docker Compose:

curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

В случае, если локальная сеть, может пересекаться с сетью docker, лучше предопределить подсеть docker. Сделать это можно в файле /etc/docker/daemon.json, переменная default-address-pools

{
"default-address-pools":
[
    {"base":"172.19.0.0/16","size":24}
]
}

Следующим этапом необходимо получить комплект поставки, в который входят docker-compose.yaml и environments и поместить его на сервер.

git clone https://github.com/Citeck/ecos-community-demo.git && cd ecos-community-demo

После этого в директории, куда поместили проект, выполнить:

docker-compose pull
docker-compose up -d

Система будет инициализирована, и после полного запуска, будет готова к работе.

Настройка Proxy в Docker

Настройки прокси задаются в файле:

/etc/systemd/system/docker.service.d/http-proxy.conf

Если этого файла или папки нет, нужно их создать. Содержимое файла должно быть примерно таким:

[Service]
Environment="HTTP_PROXY=http://<USER_NAME>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>"
Environment="HTTPS_PROXY=http://<USER_NAME>:<PASSWORD>@<PROXY_HOST>:<PROXY_PORT>"
Environment="NO_PROXY=localhost,127.0.0.1,ecos-app, ecos-apps-app, ecos-gateway-app, ecos-history-app, ecos-identity-app, ecos-integrations-app, ecos-logger-app, ecos-microservices-postgresql-app, ecos-model-app, ecos-notifications-app, ecos-process-app, ecos-proxy-app, ecos-registry-app, ecos-search-app, ecos-uiserv-app, mailhog-app, mongodb-app, node-exporter-app, only-office-app, portainer-agent-app, postgres-exporter-app, rabbitmq-app, zookeeper-app"

Также в раздел NO_PROXY можно добавить внутренние домены вашей компании (через запятую и также можно использовать звездочку например *.someco.com, *.someco.ru)

После добавления данного файла нужно перезапустить демон Docker:

systemctl daemon-reload
systemctl restart docker

Переключение на BASIC аутентификацию вместо Keycloak

Если нужен простой способ настройки для доступа в систему минуя Keycloak, то можно настроить BASIC Auth (не рекомендуется для production сред).

  1. В

    nano ecos-community-demo-master/services/environments/ecos-proxy-app.env
    

заменить строку ENABLE_OIDC_FULL_ACCESS=true на ENABLE_OIDC_FULL_ACCESS=false

  1. в этом же файле добавить - BASIC_AUTH_ACCESS=admin:admin,fet:fet

Примечание

admin:admin,fet:fet - это список пользователей, которые будут иметь доступ в систему.
Формат значения следующий - {{пользователь_0}}:{{пароль_0}},{{пользователь_1}}:{{пароль_1}}
После изменения ecos-proxy-app.env необходима перезагрузка контейнера ecos-proxy-app, чтобы изменения вступили в силу.

После внесения изменений запустите проект.

docker-compose down

в директории ecos-community-demo-master для остановки проекта

docker-compose up -d

в директории ecos-community-demo-master для запуска проекта

Данные для входа в Citeck:

Username: admin
Password: admin

Сервисы Docker

По ссылке перечислены сервисы с точки зрения Docker’а и их настройки.

Примечание

Следующие контейнеры запускаются 1 раз:

  • ecos-community-demo-master-ecos-meetings-ecos-apps-1

  • ecos-community-demo-master-ecos-order-pass-ecos-apps-1

  • ecos-community-demo-master-ecos-common-data-list-ecos-apps-1

  • ecos-community-demo-master-ecos-assignments-ecos-apps-1

и далее находятся в статусе exited

Возможные проблемы

ОС Windows

Включение функции WSL 2 в Windows

Docker Desktop использует функцию динамического распределения памяти в WSL 2, чтобы значительно снизить потребление ресурсов. Кроме того, WSL 2 улучшает совместное использование файловой системы, время загрузки и предоставляет пользователям Docker Desktop доступ к некоторым новым интересным функциям.

  1. Перед установкой WSL 2 необходимо включить необязательный компонент Платформа виртуальных машин.

В PowerShell ввести команду:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. Скачать и установить пакет обновления ядра Linux:

  1. Выбрать WSL 2 в качестве версии по умолчанию:

wsl --set-default-version 2

Проверить можно командой. Более подробная версия инструкции см. https://docs.microsoft.com/ru-ru/windows/wsl/install-win10

wsl --list --verbose
  1. При установке Docker в окне конфигурации установите галочку в поле Use WSL 2 instead of Hyper-V (recommended). Более подробная версия инструкции см. https://docs.docker.com/docker-for-windows/wsl/

Порт 8080 уже занят

Citeck UI использует порт 8080 и, если этот порт уже занят другой программой, то можно получить ошибку:

«Error starting userland proxy: listen tcp 0.0.0.0:8080:bind: Only one usage of each socket address is normally permitted.»

Если команда:

netstat -ono (или netstat -ono | findstr 8080)

не находит, чем занят порт, то нужно скачать программу, например, CurrPorts и уже с ее помощью найти занятые порты.

Порт зарезервирован Windows

К примеру, каталог ecos-postgres использует порт 50432, но этот порт зарезервирован Windows. Проверить такие порты можно командой

netsh int ipv4 show excludedportrange protocol=tcp
../_images/02.png

Команда покажет диапазон зарезервированных портов. Видно, что порт 50432 находится в данном диапазоне и поэтому при установке была получена ошибка:

«Cannot start service ecos-postgress: driver failed proogramming external connectivity on endpoint»

Чтобы это исправить, нужно в командной строке, запущенной с повышенными правами:

  1. Остановить Hyper-V:

    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    

    Выполнить перезагрузку.

  2. Добавить нужный порт в исключения:

    netsh int ipv4 add excludedportrange protocol=tcp startport=50432 numberofports=1
    
  3. Запустить Hyper-V:

    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
    

    После потребуется перезагрузка.

Порт попадет в исключения, и подобной ошибки не возникнет.

Настройка дополнительных параметров WSL в Windows

MacOS

Запускаются не все контейнеры

Если при разворачивании приложения в docker запускаются не все контейнеры:

необходимо в настройках docker добавить путь /opt: