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.
.
├── 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. ..
fin. (Läuft auf Docker Container !!)
//↑ 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)
}
$ gradle build
$ tree ./build/libs
./build/libs
└── test-build.jar
.
├── Dockerfile // New!!
├── HELP.md
├── build
├── build.gradle
├── docker-compose.yaml
├── gradle
├── gradlew
├── gradlew.bat
├── settings.gradle
└── src
#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"]
Docker
, falls nicht installiertdocker 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
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
→ Sie können auf dem Container eine Verbindung zur App herstellen! !!
jdbc: mysql: //host.docker.internal: 3306 / xxx
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.