Ein Typ, der nur Spring-Apps auf der IDE ausführen konnte, versuchte, sie auf Docker auszuführen

Hintergrund

Ich habe es für Leute geschrieben, die Spring-Apps mit einer Text-IDE erstellen können, aber Docker oder jar nicht kennen.

Vorerst wollte ich mich lokal an die Docker + Spring-Umgebung gewöhnen, also ein Memorandum of Learning.

Annahme

Ausführungsumgebung

Was zu verwenden (grob)

App-Verzeichnisstruktur

.
├── HELP.md
├── build
├── build.gradle //Einstellungen erstellen
├── gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src //Quelle mit großer Sorgfalt geschrieben

Ich habe es aus dem Spring-Initialisierer generiert, aber es sollte wie oben aussehen. ..

Verfahren

Überblick

  1. Generieren Sie eine JAR-Datei aus der erstellten App.
  2. Bereiten Sie eine Docker-Datei vor.
  3. Starten Sie Docker.

fin. (Läuft auf Docker Container !!)

Einzelheiten

1. Generieren Sie eine JAR-Datei aus der erstellten App.

Einstellungen zum Generieren von jar in build.gradle hinzugefügt


//↑ Ausgelassen, die Abhängigkeiten sind glatt ...//

//Zusätzliche ↓//
def springBootApplicationName = 'test-build' //Variable, die den Namen der zu generierenden JAR-Datei definiert (sie muss nicht in eine separate Variable umgewandelt werden).
def applicationVersion = project.properties['release.version'] //Variable, die die Version definiert (sie muss nicht in eine separate Variable umgewandelt werden)

bootJar {
    baseName = springBootApplicationName //Geben Sie den Namen der zu generierenden JAR-Datei an
    version = applicationVersion //Geben Sie die Version an (ich habe die Details nicht überprüft, muss es aber nicht sein)
}

Gehen Sie zum App-Verzeichnis auf dem Terminal und drücken Sie den folgenden Befehl

$ gradle build

Stellen Sie sicher, dass die JAR-Datei unter ". / Build / libs" generiert wird

$ tree ./build/libs
./build/libs
└── test-build.jar

2. Bereiten Sie eine Docker-Datei vor.

Erstellen Sie eine Datei mit dem Namen "Dockerfile" im obersten Verzeichnis Ihrer App. (Keine Verlängerung erforderlich)

.
├── Dockerfile // New!!
├── HELP.md
├── build
├── build.gradle
├── docker-compose.yaml
├── gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src

Beschreiben Sie Folgendes in der Docker-Datei

#Geben Sie das von Docker Hub verwendete Image an. Geben Sie das JDK an, um Java 11 auszuführen
#(Obwohl es ein offizielles openJDK gibt, habe ich es unter der Annahme erstellt, dass es auf AWS bereitgestellt wird, also spezifiziere ich irgendwie das von AWS hier bereitgestellte)
FROM amazoncorretto:11 

#Variablendefinition, in der der Verzeichnispfad gespeichert wird, in dem sich das zuvor generierte JAR befindet (geben Sie hier den Wert aus dem Befehl an).
ARG JAR_FILE

#Kopieren Sie die JAR-Datei in den Container.(app.jar gibt den Ort im Container an (jeder Ort))
COPY ${JAR_FILE} app.jar

#Definieren Sie den Befehl, der ausgeführt werden soll, wenn dieser Container ausgeführt wird (hier wird das kopierte Glas ausgeführt).
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=docker"]

3. Starten Sie Docker.

Installieren Sie Docker, falls nicht installiert

Gehen Sie zum App-Verzeichnis auf dem Terminal und drücken Sie den folgenden Befehl. (Erzeugung eines Docker-Bildes)

docker build --build-arg JAR_FILE=build/libs/exercise-manage-backend.jar -t springio/gs-spring-boot-docker .

Geben Sie den Wert der in der Docker-Datei definierten Variablen an.

--build-arg JAR_FILE=build/libs/exercise-manage-backend.jar

Der Name des generierten Bildes (optional zitiere ich den Artikel, auf den hier Bezug genommen wird).

-t springio/gs-spring-boot-docker

Drücken Sie nach dem Generieren des Bildes den folgenden Befehl. (Starten des Docker-Images)

Hinweis: Optionen wie -p müssen rechts von "run" definiert werden, um festgelegt zu werden. (Ich war hier verrückt, weil es keinen Referenzartikel gab ... Ist es im Kommandobereich vernünftig ...?)

docker run -p 8080:8080 --name spring-test --rm  springio/gs-spring-boot-docker

Ordnen Sie den Port auf dem Container (links) und den Port auf dem Ausführungshost (rechts) zu. Wenn es in application.properties nicht angegeben ist, sollte es auf 8080 gestartet werden. Verknüpfen Sie es daher mit dem lokalen 8080-Port.

-p 8080:8080

Ich denke, dass das Spring-Startprotokoll, mit dem Sie in der IDE vertraut sind, fließen wird. Nachdem Sie bestätigt haben, dass es erfolgreich gestartet wurde, greifen Sie auf localhost: 8080 zu

→ Sie können auf dem Container eine Verbindung zur App herstellen! !!

Nebenbei: So stellen Sie auf localhost eine Verbindung zur Datenbank her

Nachtrag

Wenn Sie sich das ansehen, können Sie Spring vorerst mit Docker ausführen ...! Ich habe es mit dem Ziel geschrieben, einen Artikel zu schreiben, der sich in einem solchen Zustand befinden kann. Detaillierte Erklärungen wie das Docker-Konzept und Details zu Befehlen wurden von verschiedenen Experten verfasst, daher werde ich sie hier weglassen.

Docker Ich habe es gerade berührt, daher würde ich es begrüßen, wenn Sie auf Punkte hinweisen könnten, die Sie nicht verstehen.

Referenz

Recommended Posts

Ein Typ, der nur Spring-Apps auf der IDE ausführen konnte, versuchte, sie auf Docker auszuführen
Führen Sie die AWS CLI in Docker aus