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

Detaillierte Analyse und Prüfung von SSD-Leistungsproblemen in MySQL-Servern

【Frage】 Wir haben einen HP-Server. Wenn die SSD e...

Vue implementiert bidirektionale Datenbindung

In diesem Artikelbeispiel wird der spezifische Co...

Manuelles Implementieren des Eingabefelds für den js-SMS-Bestätigungscode

Vorwort Dieser Artikel beschreibt eine allgemeine...

JDBC-Idee: MySQL importieren, um Java-JAR-Paket zu verbinden (Mac)

Vorwort 1. Dieser Artikel verwendet MySQL 8.0 Ver...

Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

In diesem Artikel wird der spezifische Code der E...

Eine kurze Analyse des Funktionsaufrufprozesses unter der ARM-Architektur

Inhaltsverzeichnis 1. Hintergrundwissen 1. Einfüh...

Docker-Container: benutzerdefinierter Host-Netzwerkzugriffsvorgang

Durch Hinzufügen des Schlüsselworts extra_hosts i...

Einige wichtige Punkte des visuellen Website-Designs

Vom Kunsthandwerksdesign über Grafikdesign bis hin...