Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 设置pycharm许可证服务器_Docker_Server_Pycharm_Archlinux - Fatal编程技术网

Docker 设置pycharm许可证服务器

Docker 设置pycharm许可证服务器,docker,server,pycharm,archlinux,Docker,Server,Pycharm,Archlinux,所以我得到了pycharm专业版。这是值得的,因为我被Windows atm困住了,pycharm很神奇,它帮助我绕过了Windows中遇到的所有障碍。我遇到的最好的工具。所以我想做授权的方法是创建一个服务器来保存许可 我想用Docker来实现这一点,创建一个Docker容器,它在后台运行服务器。因此,在我阅读的教程中,他们建议使用Archlinux作为linux服务器来运行许可证服务器。我就是这么做的。但我使用的不是裸骨拱门,而是安全升级版。以下是我的基础图片: nning2/compile-

所以我得到了pycharm专业版。这是值得的,因为我被Windows atm困住了,pycharm很神奇,它帮助我绕过了Windows中遇到的所有障碍。我遇到的最好的工具。所以我想做授权的方法是创建一个服务器来保存许可

我想用
Docker
来实现这一点,创建一个
Docker容器
,它在后台运行服务器。因此,在我阅读的教程中,他们建议使用
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
directory。所以安装这个二进制文件不起作用。但当我只是在没有任何参数的情况下运行二进制文件时:

[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
服务器正在运行。我希望能够正确安装它,以便能够轻松启动和重新启动服务(即使用
服务启动许可证服务器
),但如果它正常工作,我就不会抱怨了。我不知道为什么他们坚持使用arch,而实际上它并没有正确地安装在arch中

因此,我决定尝试创建
/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

编辑:我原以为这是解决办法,但结果不是。首先,由于某些原因,我无法在docker-compose.yml中运行带有
/etc/init.d/license\u server start
的容器。当我使用
docker ps
检查正在运行的容器时,没有正在运行的容器。我可以使用
/bin/bash
单独运行容器,根据kitematic,容器正在运行,应该可以通过转发端口访问:

但如果我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的形象,并把它放在中心,请随意这样做。我在这里上传了
gist