Java-App Deployment 2025: VPS, Docker oder Cloud – was wählen?

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Von der lokalen IDE in die Produktion: Wie man den Überblick behält

\n\n

Sie haben eine großartige Java-Anwendung geschrieben. Spring Boot läuft wie ein Uhrwerk, die PostgreSQL-Datenbank antwortet in Millisekunden und die Swagger-Dokumentation ist ein Augenschmaus. Fehlt nur noch das Wichtigste: Dass die Nutzer dieses Wunderwerk auch sehen können. Und genau hier beginnt die spannende Reise – das Java-App Deployment.

\n\n

Klingt einfach? JAR-Datei auf den Server werfen und fertig. Doch in der Praxis scheitern Einsteiger an Fragen wie: „Warum stürzt die App nach einer Stunde ab?“, „Wie aktualisiere ich Code ohne Ausfallzeit?“ oder „Warum reicht mein VPS mit 512MB RAM nicht für meinen Monolithen?“. In diesem Artikel beleuchten wir die drei wichtigsten Deployment-Methoden: den klassischen VPS, das moderne Docker und Cloud-Plattformen. Sie erfahren, welcher Weg zu Ihrem Projekt passt, und erhalten sofort einsatzbereite Befehle für den Start.

\n\n

Methode #1: Der klassische VPS (Virtual Private Server)

\n\n

VPS – ein reservierter Teil eines Servers, den Sie monatlich mieten. Die älteste und bewährteste Methode. Sie erhalten Root-Zugriff, installieren Java, die Datenbank und starten Ihre Anwendung. Einfach und direkt, aber mit einigen Fallstricken.

\n\n

So funktioniert's

\n

Sie mieten einen VPS (z.B. bei Hetzner, Netcup oder DigitalOcean), verbinden sich per SSH und richten die Umgebung manuell ein. Ein typisches Szenario für Java-Entwickler sieht so aus:

\n\n
# Verbindung zum Server\nssh root@123.456.789.0\n\n# Installation von Java 17 (OpenJDK)\napt update && apt install openjdk-17-jdk -y\n\n# Version prüfen\njava -version\n\n# JAR-Datei kopieren (per SCP oder git clone)\nscp target/my-app.jar root@123.456.789.0:/opt/app/\n\n# Start im Hintergrund\nnohup java -jar /opt/app/my-app.jar > /var/log/app.log 2>&1 &\n
\n\n

Fertig. Die Anwendung läuft. Aber sobald Sie die SSH-Sitzung schließen, kann der Prozess abstürzen. Deshalb verwendet man systemd – den Linux-Dienstmanager. Erstellen Sie die Datei /etc/systemd/system/myapp.service und fügen Sie Folgendes ein:

\n\n
[Unit]\nDescription=My Java App\nAfter=network.target\n\n[Service]\nUser=appuser\nExecStart=/usr/bin/java -jar /opt/app/my-app.jar\nSuccessExitStatus=143\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n
\n\n

Starten Sie dann systemctl start myapp – und die Anwendung läuft unabhängig von Ihrer Sitzung weiter.

\n\n

Vorteile von VPS

\n
    \n
  • Volle Kontrolle: Sie sind der König auf Ihrem Server.
  • \n
  • Niedriger Preis: Ab etwa 5-10 Euro pro Monat für eine Basiskonfiguration.
  • \n
  • Flexibilität: Sie können jede Software in jeder Version installieren.
  • \n
\n\n

Nachteile von VPS

\n
    \n
  • Manuelle Einrichtung: Alles muss von Hand gemacht werden – von der Java-Installation bis zur Firewall-Konfiguration.
  • \n
  • Skalierung: Wird die Anwendung populär, ist das manuelle Erweitern der Ressourcen mühsam.
  • \n
  • Backup & Sicherheit: Ohne automatische Backups und fail2ban kann ein einziger Fehler den Server lahmlegen.
  • \n
\n\n

Wann ist ein VPS die richtige Wahl? Für ein Hobby-Projekt, einen Telegram-Bot oder eine kleine API für Freunde. Oder wenn Sie Linux und DevOps besser verstehen möchten.

\n\n

Methode #2: Docker – Containerisierung ohne Kopfschmerzen

\n\n

Docker löst das Hauptproblem von VPS: „Auf meinem Rechner funktioniert's!“. Ein Container ist eine isolierte Umgebung mit Ihrer Anwendung und allen Abhängigkeiten. Sie bauen das Image einmal, und es läuft auf jedem Server gleich – egal ob zu Hause oder auf einem VPS in Australien.

\n\n

Dockerfile für Java schreiben

\n

Für eine typische Spring Boot Anwendung sieht das Dockerfile so aus:

\n\n
# Offizielles OpenJDK-Image verwenden\nFROM openjdk:17-jdk-slim\n\n# Arbeitsverzeichnis festlegen\nWORKDIR /app\n\n# JAR-Datei kopieren\nCOPY target/my-app.jar app.jar\n\n# Port freigeben\nEXPOSE 8080\n\n# Anwendung starten\nENTRYPOINT ["java", "-jar", "app.jar"]\n

Blogs

Buchempfehlungen