Beispiel für die Bereitstellung von Spring Boot mit Docker

Beispiel für die Bereitstellung von Spring Boot mit Docker

Hier verwenden wir hauptsächlich Spring-Boot, das ein eigenständiges Programm generieren kann, und das Maven-Plugin Docker-Maven-Plugin

Die wichtigsten Schritte hier

  • Erstellen Sie ein einfaches Springboot-Projekt
  • Docker-Maven-Plugin hinzufügen und Dockerfile schreiben
  • Üben Sie das Generieren von Docker-Images

Ein einfaches Spring Boot-Projekt

Nehmen Sie Spring Boot 2.0 als Beispiel

Paramentabhängigkeit in der Datei pom.xml hinzufügen

 <übergeordnetes Element>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-parent</artifactId>
 <version>2.0.0.RELEASE</version>
</übergeordnet>

Web- und Testabhängigkeiten hinzufügen

<Abhängigkeiten>
   <Abhängigkeit>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
   </Abhängigkeit>
   <Abhängigkeit>
     <groupId>org.springframework.boot</groupId>
     <artifactId>Spring-Boot-Starter-Test</artifactId>
     <scope>Test</scope>
   </Abhängigkeit>
 </Abhängigkeiten>

Erstellen Sie einen Controller mit einer index()-Methode, die zurückgibt: Hallo Docker!

@RestController
öffentliche Klasse Controller {
 
  @RequestMapping("/")
  öffentlicher Stringindex() {
    returniere "Hallo Docker!";
  }
}

Startup-Klasse

@SpringBootAnwendung
öffentliche Klasse Anwendung {
 öffentliche statische void main(String[] args) {
 SpringApplication.run(Anwendung.Klasse, Argumente);
 }
}

Starten Sie das Projekt nach dem Hinzufügen. Öffnen Sie nach dem erfolgreichen Start den Browser: http://localhost:8080/. Die Seite gibt „Hallo Docker!“ zurück, was darauf hinweist, dass das Spring Boot-Projekt normal konfiguriert ist.

dcoker-maven-plugin hinzufügen

Fügen Sie dem Eigenschaftenknoten in pom.xml das Docker-Image-Präfix hinzu

<Eigenschaften>
 <docker.image.prefix>springboot</docker.image.prefix>
</Eigenschaften>

Fügen Sie das Docker Build-Plugin in Plugins hinzu

<Bauen>
    <Plugins>
      <Plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>Spring-Boot-Maven-Plugin</artifactId>
      </plugin>
      <Plugin>
        <groupId>com.spotify</groupId>
        <artifactId>Docker-Maven-Plugin</artifactId>
        <version>1.0.0</version>
        <Konfiguration>
          <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
          <dockerDirectory>src/main/docker</dockerDirectory>
          <Ressourcen>
            <Ressource>
              <Zielpfad>/</Zielpfad>
              <Verzeichnis>${project.build.directory}</Verzeichnis>
              <include>${project.build.finalNmae}.jar</include>
            </Ressource>
          </Ressourcen>
        </Konfiguration>
      </plugin>
    </plugins>
  </bauen>

Schreiben einer Docker-Datei

Erstellen Sie eine Dockerfile-Datei im Verzeichnis src/main/docker. Die Dockerfile-Datei wird verwendet, um zu erklären, wie das Image erstellt wird.

VON openjdk:8-jdk-alpine
VOLUMEN /tmp
ADD spring-boot-docker-1.0.jar app.jar
EINSTIEGSPUNKT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080

Dieses Dockerfile ist sehr einfach. Es erstellt die JDK-Basisumgebung und fügt dem Image das Spring Boot Jar hinzu. Hier ist eine kurze Beschreibung:

  • FROM bedeutet, dass die JDK8-Umgebung als Basisimage verwendet wird. Wenn das Image nicht lokal ist, wird es von DockerHub heruntergeladen.
  • VOLUME, VOLUME zeigt auf ein /tmp-Verzeichnis. Da Spring Boot den integrierten Tomcat-Container verwendet, verwendet Tomcat standardmäßig /tmp als Arbeitsverzeichnis. Die Auswirkung dieses Befehls ist: Erstellen Sie eine temporäre Datei im Verzeichnis /var/lib/docker des Hosts und verknüpfen Sie sie mit dem Verzeichnis /tmp im Container
  • ADD, kopiere die Datei und benenne sie um
  • ENTRYPOINT: Um die Startzeit von Tomcat zu verkürzen, fügen Sie die Systemeigenschaft java.security.egd hinzu, um auf /dev/urandom als ENTRYPOINT zu verweisen.
  • EXPOSE zeigt an, dass Port 8080 Dienste bereitstellt

Docekr-Image generieren

Zum Verpacken des Spring Boot-Projekts ist eine Docker-Umgebung erforderlich.

Drei Abhängigkeiten sind erforderlich

  • JDK-Umgebung
  • Maven
  • Docker-Umgebung

Wenn beim Ausführen java -version,mvn -version,docker version kein Fehler auftritt, ist die Umgebung bereit.

Geben Sie das Projektverzeichnis ein

mvn-Paket -Dmavne.test.skip=true
java -jar target/spring-boot-docker-1.0.jar

Wenn es normal ausgeführt werden kann, bedeutet dies, dass kein Problem mit dem JAR-Paket vorliegt.

Erstellen Sie dann das Image

mvn docker:bauen

Wenn der Build-Erfolg angezeigt wird, war er erfolgreich.

Verwenden Sie Docker-Images, um das erstellte Image anzuzeigen

Ausführen des Images

docker run -p 8080:8080 -t springboot/spring-boot-docker

Dann curl http://127.0.0.1:8080 und Sie können sehen, dass Hello Docker! zurückgegeben wird, was auf Erfolg hinweist

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Hinweise zum Bereitstellen von SpringBoot-Projekten mit IDEA und Dockerfile
  • So stellen Sie ein SpringBoot-Projekt mit Dockerfile bereit
  • Führen Sie die Schritte für Spring Boot aus, um Projekte schnell mit Docker bereitzustellen.
  • Dockerfile-Verwendung in Springboot

<<:  So erstellen Sie ein Drag & Drop-Plugin mit benutzerdefinierten Vue-Direktiven

>>:  Beschreiben Sie kurz den Unterschied zwischen Redis und MySQL

Artikel empfehlen

Ubuntu 16.04 mysql5.7.17 öffnet Remote-Port 3306

Aktivieren Sie den Remotezugriff auf MySQL MySQL-...

Linux-Fernsteuerungsprogramm für Windows-System (drei Methoden)

Manchmal müssen wir Programme auf dem Windows-Sys...

Verwenden Sie die vertikale Ausrichtung, um Eingabe und Bild auszurichten

Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...

22 Vue-Optimierungstipps (Projektpraxis)

Inhaltsverzeichnis Code-Optimierung Verwenden der...

Nginx beschränkt den IP-Zugriff auf bestimmte Seiten

1. Um allen IP-Adressen den Zugriff auf die drei ...

So sichern und wiederherstellen Sie die MySQL-Datenbank, wenn sie zu groß ist

Befehl: mysqlhotcopy Dieser Befehl sperrt die Tab...

Projektpraxis zum Bereitstellen von Docker-Containern mit Portainer

Inhaltsverzeichnis 1. Hintergrund 2. Bedienungssc...

Implementierung von proxy_pass im Nginx-Reverse-Proxy

Das Format ist einfach: Proxy_Pass-URL; Die URL u...

Probleme und Lösungen beim Ersetzen von Oracle durch MySQL

Inhaltsverzeichnis Migrationstools Anwendungstran...

Detaillierte Erläuterung der bidirektionalen Docker-Netzwerkverbindung

Docker-Netzwerk anzeigen Docker-Netzwerk ls [root...

Hinweise zur Speicherverwaltung von Linux-Kernel-Gerätetreibern

/********************** * Linux-Speicherverwaltun...

JavaScript-Canvas zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code für C...