TangoRestServer установка

от автора

main

Что такое TangoRestServer?

Это web сервис для получения данных с Tango Controls. В статье пойдет речь о том как собрать RestServer из репозитория и из исходников.

Здесь будет описана работа с Linux (TangoBox 9.3 на основе Ubuntu 18.04).

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

Понадобится два скрипта get_docker.sh и install_rest.sh

Скрипт get_docker.sh, устанавливает и настраивает docker в системе.

#!/usr/bin/env bash  sudo apt-get update sudo apt-get install \     apt-transport-https \     ca-certificates \     curl \     gnupg-agent \     software-properties-common -y curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \    $(lsb_release -cs) \    stable"  sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io -y  sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo curl -L https://raw.githubusercontent.com/docker/compose/1.24.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose  sudo chmod +x /usr/local/bin/docker-compose sudo usermod -aG docker "$USER"

Скрипт install_rest.sh, получает последнею версию docker-а из репозитория и запускает его.

docker pull tangocs/rest-server:rest-server-2.1 docker run --restart unless-stopped -p 8080:8080 -d tangocs/rest-server:rest-server-2.1

Запускаем скрипты:

./get_docker.sh ./install_rest.sh

Смотрим результат выполнения. В список контейнеров добавился tangocs/rest-server.

Список запущенных контейнеров пополнил tangocs/rest-server:rest-server-2.1.

Проверка работоспособности:

Важный акцент, в системе TangoBox 9.3 изначально работает старый RestServer. Работает он не в docker-е, а в самой системе!

Проверка его работы:

Работает на 10001 порту, и поскольку он работает в системе, то обратится может к Tango Controls как к localhost, чего не сможет docker.

http://localhost:10001/tango/rest/rc4/hosts/localhost/10000/devices/sys/tg_test/1/attributes/double_scalar/value

Так же его API устарело.

docker работает на 8080 порту, и его порт проброшен в систему. Но обращаться к Tango Controls он должен по ip адресу системы 172.17.0.1 где тот работает!

http://localhost:8080/tango/rest/v10/hosts/172.17.0.1;port=10000/devices/sys/tg_test/1/attributes/double_scalar/value

Репозиторий содержит не последнюю версию. Установить последнюю версию можно из исходников, на текущий момент 2.2.

Установка из исходников

git clone https://github.com/tango-controls/rest-server.git cd rest-server

Собирается docker под java версии 11, но все в системе работает под 8-ой версий.
Временно поменяем версию по умолчанию с 8 на 11.

sudo update-alternatives --config java

mvn package docker build -t tangocs/rest-server:rest-server-2.2 . 

Получил следующую ошибку:

COPY failed: file not found in build context or excluded by .dockerignore: stat target/.war: file does not exist

Открываем Dockerfile и меняем
COPY target/${REST_SERVER_VERSION}.war /usr/local/tomcat/webapps/tango.war
на
COPY target/rest-server-2.2-SNAPSHOT.war /usr/local/tomcat/webapps/tango.war

Т.к. docker собрался с именем rest-server-2.2-SNAPSHOT.war

Смотрим список образов:

Теперь запускаем наш docker, он будет работать на 8080 порту.

docker run --restart unless-stopped -p 8080:8080 -d tangocs/rest-server:rest-server-2.2

Процедура проверки работоспособности такая же как и в 1-ом абзаце.

Переключим версию java назад на 8-ую.

sudo update-alternatives --config java

Спасибо за внимание.

ссылка на оригинал статьи https://habr.com/ru/post/554686/