
Что такое 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/
Добавить комментарий