2017-02-05 4 views
1

So habe ich pycharm professionelle Version. Es ist es wert, da ich mit Windows atm festhalte, und pycharm ist erstaunlich, es hilft mir, alle Hindernisse zu umgehen, die ich in Windows laufe. Das beste Werkzeug, auf das ich gestoßen bin. Die Art und Weise, wie ich die Lizenzierung machen möchte, besteht darin, einen Server zu erstellen, der die Lizenz besitzt.Einen pycharm Lizenzserver einrichten

Ich möchte dies mit Docker, erstellen Sie eine docker container, die den Server im Hintergrund ausgeführt wird. In dem Tutorial, das ich lese, empfehlen sie daher, den Linux-Server Arch als Lizenzserver zu verwenden. Also das habe ich gemacht. Aber anstatt den nackten Knochenbogen zu verwenden, verwende ich die verbesserte Sicherheitsversion. Heres das Basisbild von Ich beginne:

nning2/compile-linux-grsec 

So heres meine Dockerfile bisher:

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 

So, jetzt muss ich die docker-compose.yml Datei machen nur den Lizenzserver im Hintergrund auszuführen. Heres, was habe ich bisher:

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

Als ich docker-compose build . laufen, heres, was es gibt:

$ 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 

Also alles glatt geht, bis es die binäre zu installieren versucht. Die Datei /etc/init.d/JetBrainsLicServerDVT wird aus irgendeinem Grund nicht installiert. Ich bin neu in Arch, weiß also nicht, wie Administratorrechte noch funktionieren. Ich habe anscheinend Superuser-Privilegien, weil ich die Binärdatei in das Verzeichnis/opt kopieren kann und verschiedene andere Dinge tun kann, die Superuser-Privilegien erfordern.

Ich bin neu in Arch, auf Ubuntu Ich würde sudo verwenden, aber ich weiß nicht, ob das in Arch funktioniert. Muss ich die Lizenzserver-Binärdatei mit Superuser-Berechtigungen installieren?

UPDATE: Ich habe mich in den Container interaktiv angemeldet, um zu sehen, was passiert. Es sieht also so aus, als hätte diese Arch-Distro nicht einmal ein Verzeichnis /etc/init.d. Die Installation dieser Binärdatei funktioniert also nicht. Aber wenn ich nur die binäre ohne irgendwelche Parameter laufen lasse:

[[email protected] 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 

Der Server läuft. Ich würde es vorziehen, es richtig zu installieren, so dass ich den Dienst leicht starten und neu starten kann (d. H. Mit service start license-server), aber wenn es funktioniert, funktioniert es, damit ich mich nicht beschweren kann. Ich weiß nicht, warum sie darauf bestehen, arch zu verwenden, wenn sie nicht korrekt in Arch installiert werden.

Also beschloss ich, die Schaffung der /etc/init.d Verzeichnis, um zu versuchen, dann versucht, wieder das binäre Installation, und es funktionierte:

[[email protected] app]# mkdir /etc/init.d 
[[email protected] 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. 

Und ganz sicher seine Arbeits machen:

[[email protected] app]# /etc/init.d/JetBrainsLicServerDVT restart 
Stopping JetBrainsLicServerDVT.. 
Stopped 
Starting JetBrainsLicServerDVT 

Antwort

1

EDIT: I dachte, das war die Lösung, aber es stellt sich heraus, nicht. Erstens kann ich den Container mit /etc/init.d/license_server start in dem docker-compose.yml aus irgendeinem Grund nicht ausführen. Wenn ich nach laufenden Containern mit docker ps suche, gibt es keine laufenden Container.Ich kann den Behälter mit /bin/bash von selbst laufen, und nach kitematic wird der Behälter laufen und es sollte durch den weitergeleiteten Port zugänglich sein: https://i.gyazo.com/1de96b014cfbc78f4c188ec33f336519.png

Aber wenn ich das IP und den Port ping, erhalte ich:

Ping-Anfrage konnte Host 192.168.99.100:1337 nicht finden. Bitte überprüfen Sie den Namen und versuchen Sie es erneut.

Ich verwende Docker mit VirtualBox und keine weitergeleiteten Ports für die VM angezeigt. Ich habe versucht, sie manuell hinzuzufügen, aber das änderte nichts. Das Problem bestand darin, dass der /etc/init.d Ordner nicht existierte. So zu fixieren, habe ich einfach den Ordner, nun die binäre installiert richtig:

[[email protected] app]# mkdir /etc/init.d 
[[email protected] 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. 

und jetzt kann ich starten, stoppen und starten Sie den Server einfach:

[[email protected] app]# /etc/init.d/JetBrainsLicServerDVT restart 
Stopping JetBrainsLicServerDVT.. 
Stopped 
Starting JetBrainsLicServerDVT 

So ist die verbesserte Dockerfile ist:

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 

und die docker-compose.yml Datei:

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" 

HINWEIS: Ich habe den Befehlsnamen /etc/init.d in etwas leichter zu merken geändert.

HINWEIS2: Ich bin neu bei Docker. Ich würde das gern zum Docker-Hub hinzufügen, da ich ein bisschen Zeit damit verbracht habe, es zu machen. Aber es gibt viele Dinge, die ich noch nicht weiß, wie zum Beispiel, wie Benutzer Konfigurationsparameter eingeben können (d. H. Unterschiedliche Benutzer benötigen eine andere Binärdatei).

Wenn jemand dies in ein Docker-Image verwandeln und es auf den Hub stellen möchte, können Sie dies tun. Ich habe die gist hier hochgeladen: https://gist.github.com/entheologist/42a6f6bb305897b16d1d1d6c4a9d7360