[JAVA] Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose

Überblick

Erstellen Sie die folgende Docker-Datei und starten Sie sie von Docker-Compose.

  1. Leiten Sie die Anforderung an Port 80 des Hosts an Port 8080 des Nginx-Containers weiter
  2. Leiten Sie die Anforderung an Nginx an Port 8090 des Spring Boot-Containers weiter

Was zu verwenden

Die Version ist ebenfalls aufgeführt. Es ist nicht so, dass man es ohne diese Version nicht schaffen könnte.

Verzeichnisaufbau

Es werden nur die diesmal erforderlichen Elemente aufgelistet.

--Repositorische Wurzel - docker - docker-nginx - Dockerfile - nginx.conf - docker-springboot - Dockerfile - docker-springboot-local - Dockerfile - docker-compose.yml - gradlew - gradlew.bat

Erstellen Sie verschiedene Docker-Dateien

Nginx

Starten Sie Nginx Dockerfile

docker/docker-nginx/Dockerfile


FROM nginx:1.15.0

ADD nginx.conf /etc/nginx/conf.d/nginx.conf

Nginx-Konfigurationsdatei

Es ist keine Docker-Datei, wird jedoch im Skript in der Docker-Datei verwendet.

docker/docker-nginx/nginx.conf


server {
  listen 8080;
  charset utf-8;
  access_log off;

  location / {
    proxy_pass http://app:8090;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /static {
    access_log   off;
    expires      30d;

    alias /app/static;
  }
}

Ich weiß nicht, ob das das Beste ist. Es gibt kein HTTPS, und Sie müssen hier hinzufügen, was Ihre Anwendung benötigt.

Die App von App: 8090 ist der später beschriebene Spring Boot-Container von docker-compose.yml.

Spring Boot

Spring Boot Startup Dockerfile (von Git klonen und starten)

docker/docker-springboot/Dockerfile


FROM openjdk:10.0.1-jdk

RUN git clone https://github.com/xxxx/repo_name.git
WORKDIR ./repo_name

RUN ./gradlew --full-stacktrace -q build

CMD ./gradlew bootRun

Spring Boot-Start Dockerfile (beginnen Sie mit der Bezugnahme auf die lokale Quelle)

docker/docker-springboot-local/Dockerfile


FROM openjdk:10.0.1-jdk

Da die erforderlichen Einstellungen in docker-compose.yml angegeben sind, ist das Ergebnis nur FROM.

Erstellen Sie die Datei docker-compose.yml

docker-compose.yml


version: '3'

services:

  nginx:
    container_name: container_nginx
    build: docker/docker-nginx
    restart: always
    ports:
      - 80:8080
    hostname: container_nginx_hostname
    links:
      - app

  app:
    container_name: container_springboot
    restart: always
    build: docker/docker-springboot
    expose:
      - 8090
    command: ./gradlew bootRun
    hostname: container_springboot_hostname

#Wird beim schnellen lokalen Start verwendet
#  app:
#    container_name: container_springboot-local
#    restart: always
#    build: docker/docker-springboot-local
#    expose:
#      - 8090
#    command: ./gradlew bootRun
#    hostname: container_springboot-local_hostname
#    working_dir: /container_springboot
#    volumes:
#      - ./:/container_springboot

Lauf

Wenn Sie es mit Docker-Comose starten, können Sie die API unter localhost / application path ausführen.

Zusammenfassung

Ich habe es grob geschrieben, um den Inhalt von Dockerfile und docker-compose.yml nicht zu vergessen. Daher gibt es keine ausführliche Erklärung, aber ich konnte die HTTP-Anfrage mit Nginx oben akzeptieren und an Spring Boot senden.

Recommended Posts

Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Erstellen Sie eine Anfrage-App mit Spring Boot
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Mit Spring Boot herunterladen
Konfigurieren Sie die Spring Boot-Anwendung mit dem Maven Multi-Modul
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Versuchen Sie, OpenID Connect mit Keycloak (Spring Boot-Anwendung) zu verwenden.
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
[Spring Boot] Erstellung von Webanwendungen
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
CICS-Java-Anwendung ausführen- (4) Spring Boot-App
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Nginx + Spring Boot Papagei Return LineBot mit VPS gemacht
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Spring Boot-Anwendung, die DB-Verbindungseinstellungen mit Parametern angibt
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Spring Boot-Anwendungsentwicklung in Eclipse
Überprüfungspunkte für den Spring Boot-Anwendungscode
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Hot Deploy mit Spring Boot-Entwicklung
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
(Intellij) Hallo Welt mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Implementieren Sie die Spring Boot-Anwendung in Gradle
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Erstellen wir eine Buchverwaltungs-Webanwendung mit Spring Boot part1
Lassen Sie uns mit Spring Boot part3 eine Webanwendung für die Buchverwaltung erstellen
Lassen Sie uns mit Spring Boot part2 eine Webanwendung für die Buchverwaltung erstellen
[Anfänger] Versuchen Sie, die REST-API für die Todo-App mit Spring Boot zu schreiben
Starten Sie mit IntelliJ ein (altes) Spring Boot-Projekt
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Versuchen Sie es mit Spring Boot mit VS-Code
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async
CI / CD Spring-Anwendung mit CircleCI (Heroku)
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf