Mal ganz ehrlich. Waren wir nicht alle mal in der Situation das wir auf unserem Server 2 Anwendung hatten, die einander einfach überschreiben haben, nicht gleichzeitig laufen wollten, oder andere Versionen von Java, Python oder anderen Programmen benötigten? Bestimmt. Und dafür gibt es eine Lösung: Docker. Aber was, wenn die Java Anwendung kein Dockerfile hat? Genau, wir machen selbst einen, und hier ist wie:

Um diesem Tutorial folgen zu können, müsst ihr Docker auf eurem PC / Server und einen Texteditor (unter Linux z.B. nano, unter Windows z.B. "Editor") installiert haben.

Zuerst müssen wir einen Dockerfile erstellen, den wir später mit Docker in ein Image "umwandeln". Erstellt dazu einfach eine Datei und nennt diese Dockerfile (ohne Endung). Öffnet die Datei in eurem Texteditor der Wahl und kopiert diesen Code:

FROM java:8-jdk-alpine
 
# Install wget
RUN apk update && apk add --no-cache wget

# Get the "latest" bot release
RUN wget https://github.com/exampleblabla/yourjavafile.jar
 
# The startup command to execute the jar
CMD ["java", "-Dnogui=true", "-jar", "/yourjavafile.jar"]

Das FROM gibt an, dass wir ein Image als Basis verwenden. In diesem Fall ist das ein vorgefertigtes Image mit Java 8 und der Linux-Distro alpine, die wir benutzen, weil diese im Vergleich zu z.B. Ubuntu kleiner ist.

Docker ignoriert Anweisungen mit #. Sie dienen nur als Übersicht.

Der 2. Schritt in diesem Image ist die Installation von wget, damit wir später unsere Javascript Datei aus dem Internet herunterladen können. Um normale Linux Befehle in einem Dockerfile auszuführen, benutzen wir RUN und dahinter den entsprechenden Befehl.

Als 3. Downloaden wir die Javascript Datei. Dies könnte zum Beispiel ein Minecraft Server sein, ist in unserem Beispiel unten ein Discord MusicBot. Statt dem example.com/file.jar Link müsst ihr hier natürlich den direkten Link zu eurer Javascrip Datei angeben.

Den Start Befehl für Java könnt ihr Anpassen in dem ihr weitere Optionen "-so", hinzufügt, und den Namen der Datei nach dem / ändert. Hier ist als Beispiel der Docker für ein Discord MusicBot:

FROM java:8-jdk-alpine
 
# Install wget
RUN apk update && apk add --no-cache wget

# Get the "latest" bot release
RUN wget https://github.com/jagrosh/MusicBot/releases/download/0.3.4/JMusicBot-0.3.4.jar
 
# The startup command to execute the jar
CMD ["java", "-Dnogui=true", "-jar", "/JMusicBot-0.3.4.jar"]

Jetzt müsst Ihr den Dockerfile noch in ein richtiges Docker Image verwandeln. Dach macht ihr in dem Ihr in der Befehlszeile (unter Windows z.B. CMD) in den Ordner geht und den docker build Befehl ausführt.

docker build -t deingewähltername/imagename:version

Bei unserem Beispiel Image (dem MusicBot) wäre das dann:

docker build -t onejuru/javamusicbot

Der MusicBot in unserem Beispiel möchte noch eine Datei namens config.txt im selben Ordner haben. Das könnt ihr aber einfach erreichen in dem Ihr eine Datei auf eurem PC / Server erstellt, und die an den Docker "bindet". Selbiges funktioniert auch mit Ordnern.