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

JavaScript implementiert kreisförmiges Karussell

In diesem Artikel wird der spezifische JavaScript...

Erfahren Sie in 3 Minuten, wie Sie den Supervisor Watchdog verwenden

Software- und Hardwareumgebung centos7.6.1810 64b...

JavaScript zum Erzielen digitaler Uhreffekte

In diesem Artikelbeispiel wird der spezifische Co...

CSS Paint API: Ein CSS-ähnliches Zeichenbrett

1. Canvas-Bilder als CSS-Hintergrundbilder verwen...

Grundkenntnisse der MySQL-Datenbank

Inhaltsverzeichnis 1. Datenbanken verstehen 1.1 D...

Eine kurze Analyse von Linux resolv.conf

1. Einleitung resolv.conf ist die Konfigurationsd...

Über die Überlappung von Randwert und vertikalem Rand in CSS

Rand paralleler Boxen (Überlappung doppelter Ränd...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...