设置一个pycharm许可证服务器

所以我得到了pycharm专业版。 它是值得的,因为我与Windows atm卡住,pycharm是惊人的,它可以帮助我绕过所有的障碍,我跑进了机智的Windows。 我遇到的最好的工具。 所以我想要做许可的方式是创build一个服务器,它将持有许可证。

我想用Docker做到这一点,创build一个Docker docker container ,在后台运行服务器。 所以在我阅读的教程中,他们推荐使用Arch Linux作为Linux服务器来运行许可证服务器。 这就是我所做的。 但是,而不是使用裸骨头拱门,我正在使用安全升级版本。 下面是我开始的基础图像:

 nning2/compile-linux-grsec 

所以inheritance人我的Dockerfile到目前为止:

 FROM nning2/compile-linux-grsec ENV APP_ROOT /app ENV SERVER_DIR /opt/dvt-jb-lic-server ENV SERVER_BINARY dvt-jb_licsrv.linux.amd64 ENV SERVER_BINARY_PATH "${SERVER_ROOT}/${SERVER_BINARY}" ENV COMPOSE_CONVERT_WINDOWS_PATHS 1 RUN mkdir -p $APP_ROOT WORKDIR $APP_ROOT VOLUME [".:/app"] ADD "./${SERVER_BINARY}" $APP_ROOT RUN mkdir -p $SERVER_DIR RUN cp "${APP_ROOT}/${SERVER_BINARY}" $SERVER_BINARY_PATH RUN chmod +x $SERVER_BINARY_PATH RUN ls -l $SERVER_DIR RUN $SERVER_BINARY_PATH -mode install 

所以现在我只需要使docker-compose.yml文件在后台运行许可证服务器。 下面是我到目前为止:

 version: '2' services: shell: build: . command: /bin/bash service license-server ports: - "1337:1337" 

当我运行docker-compose build . ,inheritance人输出:

 $ docker-compose build --force-rm --no-cache Building shell Step 1 : FROM nning2/compile-linux-grsec ---> baf47265c7fc Step 2 : ENV APP_ROOT /app ---> Running in 77d33bfe8848 ---> 67afb97c5b46 Removing intermediate container 77d33bfe8848 Step 3 : ENV SERVER_DIR /opt/dvt-jb-lic-server ---> Running in c1b0615d8bec ---> 1bc7ac4a8b78 Removing intermediate container c1b0615d8bec Step 4 : ENV SERVER_BINARY dvt-jb_licsrv.linux.amd64 ---> Running in be4210954aaa ---> ce48dd70acbb Removing intermediate container be4210954aaa Step 5 : ENV SERVER_BINARY_PATH "${SERVER_ROOT}/${SERVER_BINARY}" ---> Running in 9e1a0aa39855 ---> a1c99aad2418 Removing intermediate container 9e1a0aa39855 Step 6 : ENV COMPOSE_CONVERT_WINDOWS_PATHS 1 ---> Running in 2a9337698969 ---> dae5eff0e382 Removing intermediate container 2a9337698969 Step 7 : RUN mkdir -p $APP_ROOT ---> Running in ffe6894f4d15 ---> 2c9bfd607bc0 Removing intermediate container ffe6894f4d15 Step 8 : WORKDIR $APP_ROOT ---> Running in 5404c27b138c ---> a607eaed217e Removing intermediate container 5404c27b138c Step 9 : VOLUME .:/app ---> Running in ad577ac00c9e ---> 2fe4a66ba1ed Removing intermediate container ad577ac00c9e Step 10 : ADD "./${SERVER_BINARY}" $APP_ROOT ---> 5ec55e991fba Removing intermediate container 55ae3d52227f Step 11 : RUN mkdir -p $SERVER_DIR ---> Running in d76e590f011a ---> b379ef02ab88 Removing intermediate container d76e590f011a Step 12 : RUN cp "${APP_ROOT}/${SERVER_BINARY}" $SERVER_BINARY_PATH ---> Running in 5e0d782f4549 ---> 802eeb561b62 Removing intermediate container 5e0d782f4549 Step 13 : RUN chmod +x $SERVER_BINARY_PATH ---> Running in 64c79436824c ---> c67396e5a721 Removing intermediate container 64c79436824c Step 14 : RUN ls -l $SERVER_DIR ---> Running in 0cda941ffc29 total 0 ---> a94136235d9d Removing intermediate container 0cda941ffc29 Step 15 : RUN $SERVER_BINARY_PATH -mode install ---> Running in d9bfeb3ae871 [91m2017/02/05 02:34:38 Installing license server as service. 2017/02/05 02:34:38 open /etc/init.d/JetBrainsLicServerDVT: no such file or directory 2017/02/05 02:34:38 Errors while installing the license server. Are you running this as root/Administrator? [0m ---> a08092892872 Removing intermediate container d9bfeb3ae871 Successfully built a08092892872 

所以一切都顺利,直到它试图安装二进制文件。 由于某种原因,不安装/etc/init.d/JetBrainsLicServerDVT文件。 我是Arch的新手,所以不知道pipe理员权限是如何工作的。 我似乎拥有超级用户权限,因为我可以将二进制文件复制到/ opt目录,并执行其他需要超级用户权限的其他操作。

我是Ubuntu新手,我会使用sudo但是我不知道这是否适用于Arch。 我是否需要以超级用户权限安装许可证服务器二进制文件?

更新:我交互式地login到容器,看看发生了什么。 所以看起来这个arch发行版甚至没有/etc/init.d目录。 所以安装这个二进制文件不起作用。 但是,当我只运行没有任何参数的二进制文件:

 [root@b140eac75b52 app]# ./dvt-jb_licsrv.linux.amd64 2017/02/05 03:18:50 Starting license server. 2017/02/05 03:18:50 _____ . + _____ \ | : ,` ________\ |___________________ |____l____ _ / . | | /___ \_|____/___ \___________\_|\ /` / / | /y!r --------------``----\_____/ /\__________/ ------ ____\ `~~~~----/ `----------` /____ \_____/( DVT JetBrains License Server v1.1 )\____/ 2017/02/05 03:18:50 [!] Server running at: http://127.0.0.1:1337 2017/02/05 03:18:50 [!] Stop the license server with Ctrl+C 2017/02/05 03:18:50 [?] For advanced usage refer to --help 

服务器运行。 我宁愿能够正确安装它,以便我可以轻松启动和重新启动服务(即service start license-server ),但如果它的工作,它的工作,所以我不能抱怨。 我不知道为什么他们坚持使用拱门时,它实际上并没有正确安装在拱门。

所以我决定尝试创build/etc/init.d目录,然后尝试再次安装二进制文件,它的工作原理:

 [root@b140eac75b52 app]# mkdir /etc/init.d [root@b140eac75b52 app]# ./dvt-jb_licsrv.linux.amd64 -mode install 2017/02/05 03:41:30 Installing license server as service. 2017/02/05 03:41:30 Successfully installed license server service. 

并且要充分确定其工作:

 [root@b140eac75b52 app]# /etc/init.d/JetBrainsLicServerDVT restart Stopping JetBrainsLicServerDVT.. Stopped Starting JetBrainsLicServerDVT 

编辑:我认为这是解决scheme,但事实certificate它不是。 首先,我不能在docker-compose.yml中使用/etc/init.d/license_server start运行容器。 当我用docker ps检查运行的容器时,没有正在运行的容器。 我可以用/bin/bash自己运行容器,根据kitematic,容器正在运行,应该可以通过转发的端口访问: https ://i.gyazo.com/1de96b014cfbc78f4c188ec33f336519.png

但是如果我ping那个IP和端口,我会得到:

Ping请求找不到主机192.168.99.100:1337。 请检查名称,然后重试。

我使用的是与VirtualBox的Docker,并没有转发的端口显示为虚拟机。 我试图添加他们手动,但没有改变。

问题是/etc/init.d文件夹不存在。 所以要解决它,我刚刚创build了文件夹,现在二进制文件安装正确:

 [root@b140eac75b52 app]# mkdir /etc/init.d [root@b140eac75b52 app]# ./dvt-jb_licsrv.linux.amd64 -mode install 2017/02/05 03:41:30 Installing license server as service. 2017/02/05 03:41:30 Successfully installed license server service. 

现在我可以轻松启动,停止并重新启动服务器:

 [root@b140eac75b52 app]# /etc/init.d/JetBrainsLicServerDVT restart Stopping JetBrainsLicServerDVT.. Stopped Starting JetBrainsLicServerDVT 

所以改进的Dockerfile是:

 FROM nning2/compile-linux-grsec ENV APP_ROOT /app ENV SERVER_DIR /opt/dvt-jb-lic-server ENV SERVER_BINARY dvt-jb_licsrv.linux.amd64 ENV SERVER_BINARY_PATH "${SERVER_ROOT}/${SERVER_BINARY}" ENV COMPOSE_CONVERT_WINDOWS_PATHS 1 RUN mkdir -p $APP_ROOT WORKDIR $APP_ROOT VOLUME [".:/app"] ADD "./${SERVER_BINARY}" $APP_ROOT RUN mkdir -p $SERVER_DIR RUN mv "${APP_ROOT}/${SERVER_BINARY}" $SERVER_BINARY_PATH RUN chmod +x $SERVER_BINARY_PATH RUN mkdir /etc/init.d RUN $SERVER_BINARY_PATH -mode install RUN mv "/etc/init.d/${SERVER_BINARY}" /etc/init.d/pycharm_license 

docker-compose.yml文件:

 version: '2' services: license_server: environment: ENV COMPOSE_CONVERT_WINDOWS_PATHS: 1 build: . command: /bin/bash /etc/init.d/pycharm_license start ports: - "1337:1337" 

注意:我改变了/etc/init.d命令的名字,使其更容易记住。

注2:我是Docker的新手。 我想把它添加到Docker中心,因为我花了一些时间做这个。 但是还有很多我还不知道的东西,比如如何让用户inputconfiguration参数(即不同的用户需要不同的二进制文件)。

如果有人想把它变成一个Docker镜像并将其放在集线器上,请随时这样做。 我在这里上传了gist : https : //gist.github.com/entheologist/42a6f6bb305897b16d1d1d6c4a9d7360