bananenmeister
Goto Top

Java (jar) Programm laufen lassen und Port öffnen

Hallo Zusammen,
Ich habe ein Java Programm programmiert, dass beim ausführen des Programmes einen Application-Server startet und dann auf einem bestimmten Port, z.B. 8080 hört. Wenn man das auf einem „normalen“ PC ausführt braucht man nur java 8. Dann kann man anschliessend über localhost:8080 die Funktionen des Programmes erreichen.

Nun möchte ich gerne dieses Java-Programm auf meinem Synology NAS ausführen und über extern erreichen können. Das Java Programm soll also immer laufen und erreichbar sein. (Den Port kann ich natürlich frei wählen, falls der im NAS bereits verwendet wäre...)

Nun weiss ich jedoch nicht, wie ich das Programm immer laufen lassen kann und eben auch den Port öffnen...

Auch ja, das Programm liegt auf einem Share, so dass ich bei Änderungen die Datei austauschen kann und das Programm automatisch neustartet. Geht das?

Könnt ihr mir helfen? Ich weiss, etwas viel „wünsche“ :D Aber ihr würdet mir einen riesen Gefallen machen face-smile

Lg 2Seiten

P.s. Bin nicht sicher ob das der richtige Themabereich ist. Hardware NAS fand ich irgendwie unpassend.

Content-Key: 371097

Url: https://administrator.de/contentid/371097

Printed on: May 23, 2024 at 19:05 o'clock

Member: IrunGoldstein
IrunGoldstein Apr 13, 2018 updated at 10:03:58 (UTC)
Goto Top
Hi 2Seiten,

wäre es eine Option dein Java Programm in einem DockerImage zu verpacken inkl. der jeweils geforderten Java Version? Falls du dem nicht abgeneigt bist, wäre das relativ zügig umgesetzt da du dem Programm seinen port intern/extern(fix/variabel) mitgeben kannst. Hinzu kommt noch das dann das Image zb. per "restart always" von docker am laufen gehalten wird.

Synology kann soweit ich weis Docker ausführen.

https://www.synology.com/de-de/dsm/feature/docker


Wenn es infrage kommt bitte nochmal bescheid sagen.


Bsp. Dockerfile:

FROM openjdk:8-jre 
MAINTAINER 2Seiten <2Seiten@2Seiten.com>
 
RUN \ mkdir -p /opt/meinJavaProgramm/ && \ wget -O /opt/meinJavaProgramm/prog.jar --progress=bar:force http://path/to/progr.jar && \ java -Djava.awt.headless=true -jar /opt/meinJavaProgramm/prog.jar 

COPY startmeinprogramm.sh /opt/meinJavaProgramm/ RUN chmod +x /opt/meinJavaProgramm/startmeinprogramm.sh 

# Run this when the container is started

CMD /opt/meinJavaProgramm/startmeinProgramm.sh 

Grüße
Member: NetzwerkDude
NetzwerkDude Apr 13, 2018 at 10:02:00 (UTC)
Goto Top
Ansonsten "einfach mal ausführen, und schauen was passiert" face-smile
per ssh auf die synology einloggen, und:
java -jar deinprogramm.jar
Member: Bananenmeister
Bananenmeister Apr 13, 2018 at 11:07:15 (UTC)
Goto Top
oh wow, gute Idee. An Docker habe ich jetzt gar nicht mehr gedacht. Dann könnte ich das ganze auch woanders einfach zum laufen bringen.

Kann man den da auch etwas einrichten, dass ich "schnell" mein Java Programm austauschen kann. (Ist doch in Entwicklung und manche Funktionen müssen noch verbessert werden :D )
Member: IrunGoldstein
IrunGoldstein Apr 13, 2018 updated at 11:58:43 (UTC)
Goto Top
Ja klar so lange du es nicht veröffentlichen möchtest würde ich mir ein privates repo einrichten.

Nach jeder neuen veröffentlichten Programmversion, ein neues image build generieren es hin pushen und auf einem oder allen Docker hosts dann einen neuen pull für das image auslösen.

Falls dein Programm Logs/Configs/Daten schreibt würde ich diese dem container per -volume vom host bereitstellen. Somit kannst du nach einem update einfach container stoppen, container löschen, neuen container mit "alten" Daten neu starten.

Hört sich alles wilder an als es ist, wenn man es einmal gemacht hat, automatisiert man sich das sehr zügig.

Grüße


Edit PS:
Wenn das image mal erstellt ist und der wunsch nach weniger Kommandozeile ist kann ich https://www.portainer.io/ empfehlen. Da kannst den/die Container per GUI schön per klick erstellen/configurieren/löschen/ändern usw...
Member: maretz
maretz Apr 13, 2018 at 17:31:32 (UTC)
Goto Top
Moin,

das kannst du sogar selbst - du programmierst dir einfach eine Update-Routine in dein Programm rein, gut ist face-smile
Ansonsten kannst du aber natürlich auch dein Programm per Shell-Script starten was vorher nen rsync macht - fertig ist das mit nem 2-Zeiler...
oder du machst das richtig mit nem Repository - einfach nur ne Frage wie du das bauen willst...