Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro
X
X

Wählen Sie Ihre Währung

Türk Lirası $ US Dollar Euro

Wissensdatenbank

Startseite Wissensdatenbank Allgemein Docker-Bereitstellung von Spring Bo...

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

Docker-Bereitstellung von Spring Boot und Nginx Reverse Proxy

In modernen Softwareentwicklungsprozessen ist es von großer Bedeutung, Anwendungen schnell, zuverlässig und skalierbar bereitzustellen. In diesem Artikel stellen wir eine detaillierte Roadmap für das Ausführen von Spring Boot-Anwendungen in Docker-Containern und das Verwalten des Zugriffs auf diese Anwendungen mithilfe von Nginx als Reverse-Proxy vor. Docker ermöglicht das Verpacken von Anwendungen und ihren Abhängigkeiten in isolierten Umgebungen, während Nginx eingehende Anfragen an die richtigen Server weiterleitet und kritische Aufgaben wie Lastverteilung und Sicherheit übernimmt.

1. Einführung: Die Grundbausteine der modernen Anwendungsbereitstellung

Die Anwendungsbereitstellung ist ein integraler Bestandteil des Entwicklungsprozesses. Früher wurden Bereitstellungen manuell auf Servern durchgeführt, heute werden sie durch Automatisierung und Containertechnologien ersetzt. Dieser moderne Ansatz ermöglicht es Entwicklern, Anwendungen schneller und zuverlässiger zu veröffentlichen. Docker und Nginx spielen in diesem Prozess eine entscheidende Rolle.

1.1 Docker: Die Macht der Containerisierung

Docker ist eine Plattform, die es ermöglicht, Anwendungen und ihre Abhängigkeiten in isolierten Umgebungen, sogenannten Containern, zu verpacken. Dadurch läuft die Anwendung in verschiedenen Umgebungen (Entwicklung, Test, Produktion) konsistent. Docker reduziert die Komplexität der Anwendungsabhängigkeitsverwaltung und vereinfacht den Bereitstellungsprozess.

1.2 Nginx: Zuverlässiger und skalierbarer Reverse-Proxy

Nginx ist ein hochleistungsfähiger Webserver und Reverse-Proxy. Wenn Nginx als Reverse-Proxy verwendet wird, empfängt er eingehende Anfragen und leitet sie an die im Hintergrund laufenden Server (z. B. Spring Boot-Anwendungen) weiter. Dadurch übernimmt er wichtige Aufgaben wie Lastverteilung, Sicherheit und Caching. Nginx erhöht die Sicherheit der Anwendung und optimiert ihre Leistung.

1.3 Spring Boot: Schnelle und einfache Anwendungsentwicklung

Spring Boot ist ein Framework, das die schnelle und einfache Entwicklung von Java-basierten Anwendungen ermöglicht. Mit Funktionen wie automatischer Konfiguration, eingebetteten Servern und vereinfachter Abhängigkeitsverwaltung erleichtert Spring Boot die Arbeit von Entwicklern.

2. Containerisierung einer Spring Boot-Anwendung mit Docker

Das Platzieren einer Spring Boot-Anwendung in einem Docker-Container stellt sicher, dass die Anwendung in verschiedenen Umgebungen konsistent läuft. In diesem Abschnitt werden die Schritte zum Erstellen einer Dockerfile, zum Erstellen eines Images und zum Ausführen eines Containers im Detail behandelt.

2.1 Dockerfile erstellen

Eine Dockerfile ist eine Textdatei, die definiert, wie ein Docker-Image erstellt wird. Diese Datei enthält das Basis-Image der Anwendung, ihre Abhängigkeiten, die zu kopierenden Dateien und die auszuführenden Befehle.


# Verwende OpenJDK 17 als Basis-Image
FROM openjdk:17-jdk-slim

# Setze das Arbeitsverzeichnis
WORKDIR /app

# Kopiere den Maven Wrapper
COPY mvnw .
COPY .mvn ./.mvn
COPY pom.xml .

# Lade die Abhängigkeiten herunter
RUN ./mvnw dependency:go-offline

# Kopiere den Quellcode
COPY src ./src

# Kompiliere die Anwendung
RUN ./mvnw package -DskipTests

# Hole den Namen der JAR-Datei
RUN mv target/*.jar app.jar

# Befehl zum Ausführen der Anwendung
ENTRYPOINT ["java", "-jar", "app.jar"]

2.2 Docker Image erstellen

Nachdem die Dockerfile erstellt wurde, kann das Docker Image erstellt werden. Dieser Vorgang erstellt ein Image, das die Anwendung und ihre Abhängigkeiten enthält, indem er den Anweisungen in der Dockerfile folgt.


docker build -t spring-boot-app .

Dieser Befehl erstellt ein Image namens spring-boot-app unter Verwendung der Dockerfile im aktuellen Verzeichnis.

2.3 Docker Container ausführen

Nachdem das Docker Image erstellt wurde, kann der Container erstellt und ausgeführt werden. Dieser Vorgang erstellt eine Umgebung, in der die Anwendung ausgeführt wird, basierend auf dem Image.


docker run -p 8080:8080 spring-boot-app

Dieser Befehl erstellt einen Container unter Verwendung des spring-boot-app Images und ordnet den Port 8080 der Anwendung dem Port 8080 des Host-Rechners zu.

3. Nginx Reverse Proxy Einrichtung

Die Verwendung von Nginx als Reverse Proxy ist wichtig, um Anfragen an die Spring Boot-Anwendung zu verwalten, den Lastausgleich durchzuführen und die Sicherheit zu erhöhen. In diesem Abschnitt werden die Schritte zur Nginx-Installation, zum Erstellen einer Konfigurationsdatei und zum Neustarten von Nginx behandelt.

3.1 Nginx Installation

Nginx kann auf verschiedenen Betriebssystemen mit unterschiedlichen Methoden installiert werden. Zum Beispiel können unter Ubuntu die folgenden Befehle verwendet werden:


sudo apt update
sudo apt install nginx

3.2 Nginx Konfigurationsdatei erstellen

Um Nginx als Reverse Proxy zu betreiben, muss eine Konfigurationsdatei erstellt werden. Diese Datei definiert, an welchen Server eingehende Anfragen weitergeleitet werden und welche Ports abgehört werden.


server {
    listen 80;
    server_name example.com; # Geben Sie hier Ihren Domainnamen ein

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

Diese Konfigurationsdatei überwacht Port 80 und leitet Anfragen an den Domainnamen example.com an die Spring Boot-Anwendung unter localhost:8080 weiter.

3.3 Nginx neu starten

Damit die Änderungen in der Konfigurationsdatei wirksam werden, muss Nginx neu gestartet werden.


sudo systemctl restart nginx

4. Docker und Nginx Integration

Die gemeinsame Verwendung von Docker und Nginx vereinfacht die Bereitstellung und Verwaltung von Spring Boot-Anwendungen. In diesem Abschnitt werden die Schritte zum gemeinsamen Ausführen von Nginx und Spring Boot-Anwendungen mithilfe von Docker Compose behandelt.

4.1 Erstellen einer Docker Compose-Datei

Docker Compose ist ein Tool, mit dem mehrere Docker-Container mit einem einzigen Befehl ausgeführt werden können. Durch Erstellen einer docker-compose.yml-Datei können wir definieren, wie Nginx und die Spring Boot-Anwendung zusammenarbeiten sollen.


version: "3.8"
services:
  app:
    image: spring-boot-app
    ports:
      - "8080:8080"
    depends_on:
      - nginx

  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - app

Diese docker-compose.yml-Datei definiert zwei Dienste: app und nginx. Der app-Dienst führt die Spring Boot-Anwendung mit dem Image spring-boot-app aus. Der nginx-Dienst führt Nginx mit dem Image nginx:latest aus und bindet die Datei nginx.conf an das Konfigurationsverzeichnis von Nginx.

4.2 Ausführen der Anwendung mit Docker Compose

Nachdem die Datei docker-compose.yml erstellt wurde, kann die Anwendung mit dem folgenden Befehl ausgeführt werden:


docker-compose up -d

Dieser Befehl erstellt und startet die Container gemäß den Definitionen in der Datei docker-compose.yml.

5. Sicherheits- und Leistungsoptimierung

Um die Sicherheit und Leistung der Anwendung zu verbessern, können verschiedene Optimierungen an Nginx vorgenommen werden. In diesem Abschnitt werden Themen wie die Konfiguration von SSL-Zertifikaten, Caching und Komprimierung behandelt.

5.1 Konfiguration von SSL-Zertifikaten

Ein SSL-Zertifikat stellt sicher, dass die Anwendung sicher über HTTPS erreichbar ist. SSL-Zertifikate können einfach mit kostenlosen Zertifikatsanbietern wie Let's Encrypt bezogen werden.


server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    }
}

5.2 Caching

Nginx kann die Leistung der Anwendung verbessern, indem statische Inhalte und ein Teil der dynamischen Inhalte zwischengespeichert werden. Caching reduziert die Last auf dem Server und verkürzt die Seitenladezeiten.


proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout invalid_header updating;
    }
}

5.3 Komprimierung

Nginx kann HTTP-Antworten mithilfe der Gzip-Komprimierung komprimieren. Dies reduziert die über das Netzwerk übertragene Datenmenge und verkürzt die Seitenladezeiten.


gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss image/svg+xml;

6. Überwachung und Protokollierung

Die Überwachung des Zustands und der Leistung der Anwendung ist wichtig, um Probleme schnell zu erkennen und zu beheben. Überwachungs- und Protokollierungslösungen können für Nginx- und Spring Boot-Anwendungen konfiguriert werden.

6.1 Nginx-Protokollierung

Nginx führt Zugriffs- und Fehlerprotokolle. Diese Protokolle können verwendet werden, um zu verstehen, wie die Anwendung verwendet wird und welche Fehler auftreten.


log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                 '$status $body_bytes_sent "$http_referer" '
                 '"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;

6.2 Spring Boot-Protokollierung

Die Spring Boot-Anwendung kann Protokolle mithilfe von Protokollierungs-Frameworks wie Logback oder Log4j führen. Diese Protokolle können verwendet werden, um Fehler und Warnungen innerhalb der Anwendung zu verstehen.


logging.level.root=INFO
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n
logging.file.name=application.log

7. Beispiele aus der Praxis und Fallstudien

In diesem Abschnitt werden Beispiele aus der Praxis und Fallstudien vorgestellt, in denen Docker und Nginx zusammen mit Spring Boot-Anwendungen verwendet werden.

7.1 E-Commerce-Plattform

Eine E-Commerce-Plattform verfügt über eine mit Spring Boot entwickelte Microservices-Architektur. Jeder Microservice wird in Docker-Containern ausgeführt, und Nginx verwaltet die Anfragen, die an diese Microservices gesendet werden. Nginx verteilt die Last gleichmäßig auf jeden Microservice durch Lastverteilung und verbessert die Leistung der Anwendung. Darüber hinaus wird die Sicherheit der Anwendung durch die Verwendung eines SSL-Zertifikats gewährleistet.

7.2 Finanzanwendung

Eine Finanzanwendung hat hohe Sicherheitsanforderungen. Diese mit Spring Boot entwickelte Anwendung läuft in Docker-Containern und Nginx filtert die an diese Anwendung gerichteten Anfragen und blockiert bösartigen Datenverkehr. Nginx sorgt außerdem mit einem SSL-Zertifikat für die Sicherheit der Anwendung und steigert die Leistung durch Komprimierung.

8. Visuelle Erläuterungen

In diesem Abschnitt werden Schemata und Grafiken vorgestellt, die zeigen, wie Docker und Nginx mit Spring Boot-Anwendungen zusammenarbeiten.

Schema 1: Docker- und Nginx-Architektur mit Spring Boot-Anwendung

(Textliche Beschreibung: Dieses Schema zeigt, dass Anfragen vom Client zuerst den Nginx Reverse Proxy erreichen und Nginx diese Anfragen dann an die Spring Boot-Anwendung weiterleitet, die in Docker-Containern läuft.)

Grafik 1: Nginx Load Balancing

(Textliche Beschreibung: Diese Grafik zeigt, dass Nginx eingehende Anfragen gleichmäßig auf einen Server verteilt, auf dem mehrere Spring Boot-Anwendungen laufen.)

9. Häufig gestellte Fragen

In diesem Abschnitt werden häufig gestellte Fragen und Antworten zu Docker, Nginx und Spring Boot aufgeführt.

  • Frage: Was ist Docker?
  • Antwort: Docker ist eine Plattform, die es ermöglicht, Anwendungen und ihre Abhängigkeiten in isolierten Umgebungen, sogenannten Containern, zu verpacken.
  • Frage: Was ist Nginx?
  • Antwort: Nginx ist ein hochleistungsfähiger Webserver und Reverse Proxy.
  • Frage: Was ist Spring Boot?
  • Antwort: Spring Boot ist ein Framework, das die schnelle und einfache Entwicklung von Java-basierten Anwendungen ermöglicht.
  • Frage: Warum sollten Docker und Nginx zusammen verwendet werden?
  • Antwort: Docker stellt sicher, dass die Anwendung in verschiedenen Umgebungen konsistent läuft, während Nginx wichtige Aufgaben wie Load Balancing, Sicherheit und Caching übernimmt.

10. Fazit und Zusammenfassung

In diesem Artikel haben wir einen detaillierten Fahrplan für die Ausführung von Spring Boot-Anwendungen in Docker-Containern und die Verwaltung des Zugriffs auf diese Anwendungen mithilfe eines Nginx Reverse Proxy vorgestellt. Docker ermöglicht das Verpacken von Anwendungen und ihren Abhängigkeiten in isolierten Umgebungen, während Nginx eingehende Anfragen an die richtigen Server weiterleitet und so kritische Aufgaben wie Load Balancing und Sicherheit übernimmt. Dieser Ansatz ermöglicht die schnelle, zuverlässige und skalierbare Bereitstellung von Anwendungen.

Wichtige Punkte:

  • Docker stellt sicher, dass die Anwendung in verschiedenen Umgebungen konsistent läuft.
  • Nginx übernimmt wichtige Aufgaben wie Lastverteilung, Sicherheit und Caching.
  • Mit Docker Compose können mehrere Docker-Container mit einem einzigen Befehl ausgeführt werden.
  • Die SSL-Zertifikat erhöht die Sicherheit der Anwendung.
  • Die Überwachung und Protokollierung verfolgt den Zustand und die Leistung der Anwendung.
Merkmal Docker Nginx Spring Boot
Zweck Containerisierung Reverse Proxy und Webserver Schnelle Anwendungsentwicklung
Hauptvorteile Isolation, Portabilität, Konsistenz Lastverteilung, Sicherheit, Leistung Automatische Konfiguration, Schneller Start
Anwendungsbereiche Anwendungsbereitstellung, Microservice-Architektur Webserver, Reverse Proxy, Lastverteiler Java-basierte Anwendungsentwicklung
Optimierung Beschreibung Vorteile
SSL-Zertifikat Ermöglicht eine sichere Verbindung über HTTPS. Datensicherheit, Benutzervertrauen
Caching Zwischenspeichert statische und dynamische Inhalte. Schnellere Seitenladezeiten, reduzierte Serverlast
Komprimierung (Gzip) Komprimiert HTTP-Antworten. Weniger Datentransfer, schnellere Ladezeiten

 

Finden Sie nicht die Informationen, die Sie suchen?

Ticket erstellen
Fanden Sie es nützlich?
(904 mal angesehen / 450 Kunden fanden es hilfreich)

Call now to get more detailed information about our products and services.

Top