в docker

JetBrains Products License Server in docker


В последнее время после обновления PhpStorm (особенно до версии 2017.3.3) все чаще «слетает» активация продукта по методу «License server» — за последние пару дней приходилось раз 5 менять адрес сервера лицензий.

Давайте разберемся как поднять свой сервер лицензий для продуктов JetBrains в docker-контейнере и навсегда забыть о проблемах с активацией PhpStorm!

Считаем, что docker уже установлен и настроен. В моем примере используется самая последняя версия Docker for Mac из канала Edge:

docker -v
Docker version 18.01.0-ce, build 03596f5

Создаем каталог для работы и переходим в него:

mkdir -p ~/Code/jb-license-server && cd ~/Code/jb-license-server

В каталоге создадим Dockerfile с инструкциями для сборки docker-образа:

nano Dockerfile

Содержимое файла будет следующим:

FROM node:9.4.0-alpine

RUN apk add --update sudo \
    && sudo npm install ilsap -g --unsafe-perm \
    && rm -rf /var/cache/apk/*

EXPOSE 8997
CMD ilsap

Собираем docker-образ командой:

docker build -t my-license-server:v1 .

Запускаем контейнер из созданного docker-образа:

docker run -d --name my-license-server -p 8997:8997 --restart=always my-license-server:v1

После старта контейнера смотрим его логи:

docker logs my-license-server

Вывод должен быть примерно таким:

Starting server...
Redirecting requests to http://xidea.online
Listening on http://0.0.0.0:8997 <- Use this url to register your product

Далее для активации продукта в PhpStorm в поле «License server address» вводим адрес из лога — http://0.0.0.0:8997, жмем кнопку «Activate» и забываем о проблемах с активацией PhpStorm навсегда!

Описанный метод должен работать и для активации других продуктов JetBrains, однако я проверял только на примере PhpStorm.

Кроме того, доступно еще несколько дополнительных опций для запуска личного JetBrains Products License Server — узнать о них можно с помощью такой команды:

docker run --rm --name my-license-server -p 8997:8997 my-license-server:v1 ilsap --help

Результат выполнения будет следующим:

Usage: ilsap [options]

  Options:

    -V, --version          output the version number
    -h, --host <host>      hostname to listen on (default: 0.0.0.0)
    -p, --port <port>      port to listen on (default: 8997)
    -s, --server <server>  license server url (default: http://xidea.online)
    -n, --ngrok            start a ngrok server pointed to your local port
    -h, --help             output usage information

Примечание. Если собираетесь переопределить порт по умолчанию, не забудьте также изменить его и в Dockerfile (инструкция EXPOSE).

Например, если вы хотите проксировать запросы из docker-контейнера на другой сервер лицензирования, можно это сделать так:

docker run -d --name my-license-server -p 8997:8997 --restart=always my-lic-server:v1 ilsap -s http://idea.ibdyr.com

Если нет желания собирать docker-образ самостоятельно — можете воспользоваться готовым из Docker Hub. Дополнительную информацию и примеры использования можно найти на github.

Добавить комментарий

13 Комментария

  1. хех, сам до такого дошел, когда стали блокировать активацию по локальному адресу. но ещё и задеплоил образ на хероку, потому что не люблю, когда на винде докер стоит, а делал с виртуальной машины с линуксом. но вся прелесть локального сервера была в том, что он жил всегда, и если активация вдруг слетала, то продукт спокойно переактивировался. а сейчас, получается, для этого нужен интернет. ну либо докер, либо запущенная виртуалка. а вот нельзя ли как-то без всего этого обойтись? чтобы jetbrains-продукт думал, что он обращается куда-то на валидный для него адрес сервера активации, а на самом деле перенаправлялся на localhost

    • Вы правы, теперь нужен либо интернет, либо локально запущенная виртуалка/докер, других вариантов я пока не придумал )
      Но в наше время наличие интернета уже не большая проблема (и это хорошо).

  2. добрый день, все сделал по инструкции, но не работает, я в docker не силён, может что не настроил? логи выводятся как у Вас

    • Какая версия php-storm? В последней версии (2017.3.4) разработчики начали блокировать и хост 0.0.0.0, поэтому можно попробовать запускать docker-контейнер с использованием ngrok, такой командой:

      docker run -d --name my-license-server -p 8997:8997 --restart=always ealebed/jb-license-server ilsap -n

      После смотрите логи:
      docker logs my-license-server
      Starting server...
      Redirecting requests to http://xidea.online
      Listening on http://0.0.0.0:8997 < - Use this url to register your product https://94589024.ngrok.io <- External link

      И используете в php-storm ссылку, указанную как External link, в моем случае это https://94589024.ngrok.io

      Все должно работать, только что проверил

      • Евгений, доброго дня!

        Пытаюсь запустить сервер, но у меня падает ошибка. Так и не смог с ней разобраться

        •100% ➜ docker logs my-license-server
        Starting server…
        Redirecting requests to http://idea.ibdyr.com
        Listening on http://0.0.0.0:8997 <- Use this url to register your product
        /usr/local/lib/node_modules/ilsap/index.js:31
        if (err) throw err;
        ^

        Error: panic: runtime error: invalid memory address or nil pointer dereference

        github.com/inconshreveable/olive/recover.go:40

      • Добрый день!

        Как исправить эту ошибку? Может вы встречались с ней?

        •100% ➜ docker logs my-license-server
        Starting server…
        Redirecting requests to http://idea.ibdyr.com
        Listening on http://0.0.0.0:8997 <- Use this url to register your product
        /usr/local/lib/node_modules/ilsap/index.js:31
        if (err) throw err;
        ^

        Error: panic: runtime error: invalid memory address or nil pointer dereference

        github.com/inconshreveable/olive/recover.go:40