Установка Entaxy в Docker и создание образа

В этом руководстве представлена пошаговая инструкция по установке Entaxy ION в Docker и созданию Docker образа для удобного развертывания Entaxy в контейнеризированной среде.

В инструкции приведены примеры для версии Entaxy ION 1.10.0, убедитесь, что вы используете актуальную версию.

Подготовка Entaxy

При подготовке мы инициализируем Entaxy, чтобы сократить время запуска. Инструкция применима как для ОС Linux, так и Windows. Приведенные ниже команды предназначены для использования в Linux.

  1. Скачайте архив Entaxy ION с официального сайта (https://entaxy.ru/download) или по прямой ссылке и распакуйте скачанный архив Entaxy в директорию /opt.

    wget https://nexus.entaxy.ru/nexus/repository/entaxy-public/ru/entaxy/ion/distribution/entaxy-ion-assembly-compact/1.10.0/entaxy-ion-assembly-compact-1.10.0-binaries.zip
    mv entaxy-ion-assembly-compact-1.10.0-binaries.zip /opt
    unzip entaxy-ion-assembly-compact-1.10.0-binaries.zip
  2. Переименуйте директорию entaxy-ion-assembly-compact-1.10.0 в apache-karaf-4.2.9:

    mv /opt/entaxy-ion-assembly-compact-1.10.0 /opt/apache-karaf-4.2.9
  3. Установите Java 11, требующуюся для работы Entaxy ION и укажите переменные среды JAVA_HOME и PATH:

    sudo mkdir /opt/java11
    sudo tar xvf ./axiomjdk-jdk-pro11.0.19+7-linux-amd64.tar.gz --directory /opt/java11/
    echo 'export JAVA_HOME=/opt/java11/jdk-pro-11.0.19' >> ~/.bashrc
    echo 'export PATH=${JAVA_HOME}/bin:${PATH}' >> ~/.bashrc
    source ~/.bashrc
  4. Перейдите в каталог с распакованным Entaxy:

    cd /opt/apache-karaf-4.2.9/bin
  5. Запустите скрипт Entaxy:

    ./entaxy
  6. При запуске откроется интерфейс командной строки, в котором будет отображаться информация о состоянии запуска. После завершения установки убедитесь в успешном запуске Entaxy:

    karaf@root()> entaxy:platform-health
    Status │ Name                       │ Title                      │ Log
    ───────┼────────────────────────────┼────────────────────────────┼────
    OK     │ Entaxy Connections         │ Entaxy Connections         │
    OK     │ Entaxy Platform Bundles    │ Entaxy Platform Bundles    │
    OK     │ Entaxy Repositories        │ Entaxy Repositories        │
    OK     │ Entaxy UI Bundles          │ Entaxy UI Bundles          │
    OK     │ Entaxy Uniform Service     │ Entaxy Uniform Service     │
    OK     │ Ghost Objects HealthCheck  │ Ghost Objects HealthCheck  │
    OK     │ OSGi Framework Ready Check │ OSGi Framework Ready Check │
    karaf@root()> entaxy:inactive
      5 (0x Resolved │   7 │ 1.10.0                │ mvn:ru.entaxy.platform.logging/cef-logger-layout/1.10.0
    karaf@root()>
  7. После запуска Entaxy и установки всех необходимых модулей, остановите Entaxy выполнив команду:

    shutdown
  8. Если первый запуск системы Entaxy произошел не в каталоге /opt/, выполните следующие шаги:

    1. Удалите файлы:

      rm -f data/cave/repository/repositories.db
      rm -f instances/instance.properties
    2. Получите <ID бандла> org.apache.felix.configadmin (идентификатором бандла будет значение из первого столбца) выполнив команду:

      find org.apache.felix.configadmin
    3. Очистите каталог конфигурации найденного бандла:

      rm -rf data/cache/bundle<ID бандла>/data/config

Создание образа Entaxy в Docker

  1. Перейдите в каталог /opt:

    cd /opt
  2. Создайте файл Dockerfile в каталоге /opt со следующим содержимым:

    FROM apache/karaf:4.2.9
    
    COPY apache-karaf-4.2.9 /opt/apache-karaf-4.2.9
  3. Запустите создание Docker образа:

    docker build -t my_entaxy . -f ./Dockerfile
  4. Убедитесь, что образ был успешно создан:

    docker images
  5. Запустите контейнер:

    docker run -d -p 8101:8101 -p 8181:8181 my_entaxy
  6. Теперь можно подключиться к Entaxy с локальной машины по SSH:

    ssh -p 8101 karaf@localhost

    Если возникнет отказ в подключении с сообщением "Unable to negotiate with 127.0.0.1 port 8101: no matching host key type found. Their offer: ssh-rsa", используйте такой вариант подключения:

    ssh -p 8101 -oHostKeyAlgorithms=+ssh-rsa karaf@localhost

    Кроме SSH-подключения, для проверки можно использовать веб-консоль, доступную по адресу: localhost:8181/hawtio

Создание образа с использованием docker compose

  1. Перейдите в каталог /opt:

    cd /opt
  2. Создайте файл docker-compose.yml в каталоге /opt со следующим содержимым:

    version: '3'
    services:
      entaxy:
        container_name: entaxy
        build: ./
        restart: unless-stopped
        ports:
          - 8101:8101
          - 8181:8181
        volumes:
          - ./apache-karaf-4.2.9/data:/opt/apache-karaf-4.2.9/data
          - ./apache-karaf-4.2.9/etc:/opt/apache-karaf-4.2.9/etc
  3. Запустите создание Docker образа и запуск контейнера одной командой:

    docker compose up
  4. Теперь можно подключиться к Entaxy с локальной машины по HTTP через браузер или по SSH:

    ssh -p 8101 karaf@localhost

    Если возникнет отказ в подключении с сообщением "Unable to negotiate with 127.0.0.1 port 8101: no matching host key type found. Their offer: ssh-rsa", используйте такой вариант подключения:

Экспорт образа в файл

  1. Если у нас запущен докер, его нужно остановить:

    docker stop entaxy
  2. Сохраняем контейнер в виде образа (объединяем слои):

    docker commit entaxy entaxy_all_in_one
  3. Архивируем образ в файл:

    docker save -o ./entaxy_all_in_one.tar entaxy_all_in_one
  4. Переносим на другой сервер и загружаем в локальный реестр образов:

    docker load < entaxy_all_in_one.tar
    docker pull entaxy_all_in_one
  5. Образ перенесён и готов к запуску контейнера.