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

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

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

Подготовка и установка Entaxy

  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/ :

    rm -f data/cave/repository/repositories.db
    rm -rf data/cache/bundle9/data/config
    rm -f instances/instance.properties

Создание образа 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 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

Создание образа с использованием 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. Образ перенесён и готов к запуску контейнера.