设置pycharm许可证服务器

时间:2017-02-05 01:17:48

标签: docker server pycharm archlinux

所以我得到了pycharm专业版。它非常值得,因为我坚持使用Windows atm,pycharm非常棒,它帮助我绕过了遇到Windows的所有障碍。我遇到的最好的工具。因此,我想要执行许可的方式是创建一个可以保存许可证的服务器。

我想用Docker执行此操作,创建一个在后台运行服务器的docker container。因此,在我阅读的教程中,他们建议使用Arch linux作为Linux服务器来运行许可证服务器。这就是我所做的。但我没有使用裸骨拱,而是使用安全升级版。以下是基础图像:

nning2/compile-linux-grsec

到目前为止,这是我的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 .时,它会输出:

$ 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的新手,所以不知道管理员权限是如何工作的。我似乎有超级用户权限,因为我可以将二进制文件复制到/ opt目录并执行其他需要超级用户权限的事情。

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

更新:我以交互方式登录容器,看看发生了什么。所以看起来这个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),但是如果它有效,它就可以工作,所以我不能抱怨。我不知道为什么他们坚持使用拱门,因为它实际上并没有在拱门中正确安装。

所以我决定尝试创建/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

1 个答案:

答案 0 :(得分:1)

编辑:我认为这是解决方案,但事实并非如此。首先,由于某种原因,我无法在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。请检查   名字然后再试一次。

我将Docker与VirtualBox一起使用,并且没有为VM显示转发端口。我尝试添加它们手动,但没有改变。

问题是/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

所以改进的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中心,因为我花了一些时间来制作它。但是还有很多我还不知道的事情,比如如何让用户输入配置参数(即不同的用户需要不同的二进制文件)。

如果有人想将其转换为Docker镜像并将其放在集线器上,请随意这样做。我在这里上传了gisthttps://gist.github.com/entheologist/42a6f6bb305897b16d1d1d6c4a9d7360