Docker trifft auf Intellij IDEA, Java-Entwicklung steigert die Produktivität um das Zehnfache

Docker trifft auf Intellij IDEA, Java-Entwicklung steigert die Produktivität um das Zehnfache

Idea ist ein leistungsstarkes Tool für die Java-Entwicklung, SpringBoot ist das beliebteste Microservice-Framework im Java-Ökosystem und Docker ist die angesagteste Container-Technologie unserer Zeit. Welche Art chemischer Reaktion tritt also auf, wenn sie miteinander kombiniert werden?

1. Vorbereitung vor der Entwicklung

1. Informationen zur Docker-Installation finden Sie unter https://docs.docker.com/install/.

2. Konfigurieren Sie den Docker-Remoteverbindungsport

 vi /usr/lib/systemd/system/docker.service

Suchen Sie nach ExecStart und fügen Sie am Ende -H tcp://0.0.0.0:2375 hinzu, wie in der folgenden Abbildung gezeigt

3. Docker neu starten

systemctl daemon-reload
 systemctl Neustart Docker

4. Offene Ports

Firewall-Befehl --zone=public --add-port=2375/tcp --permanent

5.Idea installiert das Docker -Plugin und startet neu

6. Verbindung zum Remote-Docker herstellen

(1) Konfiguration bearbeiten

(2) Geben Sie die Remote-Docker-Adresse ein

(3) Wenn die Verbindung erfolgreich ist, werden der Remote-Docker-Container und das Image aufgelistet.

2. Neues Projekt

Erstellen Sie ein Springboot-Projekt

Projektstrukturdiagramm

(1) Konfigurieren Sie die POM-Datei

<?xml version="1.0" encoding="UTF-8"?>
<Projekt xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <übergeordnetes Element>
    <groupId>com.fengqi</groupId>
    <artifactId>dockerDemo</artifactId>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath> <!-- übergeordnetes Element im Repository suchen -->
  </übergeordnet>
  <groupId>com.fengqi</groupId>
  <artifactId>Netz</artifactId>
  <version>1.0.0</version>
  <name>Webseite</name>
  <description>Demoprojekt für Spring Boot</description>
  
 <Abhängigkeiten>
    <Abhängigkeit>
      <groupId>org.springframework.boot</groupId>
      <artifactId>Spring-Boot-Starter</artifactId>
    </Abhängigkeit>
 
    <Abhängigkeit>
      <groupId>org.springframework.boot</groupId>
      <artifactId>Spring-Boot-Starter-Test</artifactId>
      <scope>Test</scope>
    </Abhängigkeit>
    <Abhängigkeit>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </Abhängigkeit>
    <Abhängigkeit>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </Abhängigkeit>
  </Abhängigkeiten>
 
  <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>
          <dockerDirectory>src/main/docker</dockerDirectory>
          <Ressourcen>
            <Ressource>
              <Zielpfad>/</Zielpfad>
              <Verzeichnis>${project.build.directory}</Verzeichnis>
              <include>${project.build.finalName}.jar</include>
            </Ressource>
          </Ressourcen>
        </Konfiguration>
      </plugin>
      <Plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <Hinrichtungen>
          <Ausführung>
            <phase>Paket</phase>
            <Konfiguration>
              <Aufgaben>
                <copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
              </Aufgaben>
            </Konfiguration>
            <Ziele>
              <goal>laufen</goal>
            </Ziele>
          </Ausführung>
        </Ausführungen>
      </plugin>
    </plugins>
  </bauen>

(2) Erstellen Sie ein Docker-Verzeichnis im Verzeichnis src/main und erstellen Sie eine Dockerfile-Datei

VON openjdk:8-jdk-alpine
ADD *.jar app.jar
EINSTIEGSPUNKT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

(3) Erstellen Sie eine application.properties-Datei im Ressourcenverzeichnis

logging.config=Klassenpfad:logback.xml
logging.path=/home/entwickler/app/logs/
server.port=8990

(4) Erstellen Sie eine DockerApplication-Datei

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

(5) Erstellen Sie eine DockerController-Datei

@RestController
öffentliche Klasse DockerController {
 statisches Protokoll log = LogFactory.getLog(DockerController.class);
 @RequestMapping("/")
 öffentlicher Stringindex() {
 log.info("Hallo Docker!");
 returniere "Hallo Docker!";
 }
}

(6) Konfiguration hinzufügen

Befehl Erklärung

Bild-Tag: Geben Sie den Bildnamen und das Tag an. Der Bildname ist docker-demo und das Tag ist 1.1.

Ports binden: Binden Sie Host-Ports an interne Ports des Containers. Das Format ist [Host-Port]:[interner Container-Port]

Bind-Mounts: Mounten Sie das Host-Verzeichnis im internen Verzeichnis des Containers. Das Format ist [Hostverzeichnis]:[internes Containerverzeichnis]

Dieses Springboot-Projekt druckt Protokolle im Containerverzeichnis /home/developer/app/logs/. Nachdem das Hostverzeichnis in das interne Verzeichnis des Containers eingebunden wurde, werden die Protokolle im Hostverzeichnis außerhalb des Containers gespeichert.

(7) Maven-Verpackung

(8) Laufen

Hier können wir sehen, dass der Image-Name docker-demo:1.1 und der Docker-Container docker-server ist.

(9) Erfolgreicher Betrieb

(10) Browserzugriff

(11) Protokollansicht

Seitdem wurde das Springboot-Projekt über Idea erfolgreich in Docker bereitgestellt! Es ist kaum vorstellbar, dass die Bereitstellung eines Java-Webprojekts so einfach und bequem ist!

Abschließend möchte ich noch die entsprechenden Lern-Tutorials mit euch teilen:

https://www.bilibili.com/video/BV14t411z77T

IDEA-Lernprogramm

https://www.bilibili.com/video/BV1PZ4y1j7QK

Dies ist das Ende dieses Artikels über Docker meets Intellij IDEA, der die Produktivität der Java-Entwicklung um das Zehnfache steigert. Weitere verwandte Inhalte zu Docker meets IDEA finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Schritte zum Bereitstellen von SpringBoot-Projekten mit Docker in Idea
  • Detailliertes Tutorial zum Veröffentlichen von Springboot-Projekten über das Docker-Plugin in IDEA
  • Eine kurze Analyse der SpringBoot-Verpackung und des Hochladens in Docker sowie der Implementierung der Bereitstellung mehrerer Instanzen (IDEA-Version)
  • Stellen Sie das Springboot-Projekt basierend auf der Idee im Docker bereit
  • Java-Remote-Ein-Klick-Bereitstellung von Springboot auf Docker über Idea

<<:  Beispiel für die MySQL-Methode zum Löschen von Daten und Datentabellen

>>:  js, um den Effekt des Ziehens des Schiebereglers zu erzielen

Artikel empfehlen

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

Linux-Grep-Befehl Mit dem Linux-Befehl grep könne...

Beschreibung der Standardtransaktionsisolationsebene von MySQL und Oracle

1. Transaktionsmerkmale (ACID) (1) Atomarität. Di...

onfocus="this.blur()" wird von blinden Webmastern gehasst

Als er über die Seite zur Bedienung der Bildschir...

Praktische Aufzeichnung von VUE mithilfe des Wortwolkendiagramms von Echarts

echarts Wortwolke ist eine Erweiterung von echart...

JavaScript zum Erzielen eines benutzerdefinierten Bildlaufleisteneffekts

In tatsächlichen Projekten befinden sich die Bild...

Eine kurze Diskussion über Flex-Layout und Skalierungsberechnung

1. Einführung in Flex Layout Flex ist die Abkürzu...

Probleme beim Springen auf HTML-Seiten und bei der Parameterübertragung

HTML-Seitensprung: Fenster.öffnen(URL, "&quo...

Detaillierte Erläuterung der gleichzeitigen Parameteranpassung von MySQL

Inhaltsverzeichnis Abfrage-Cache-Optimierung Über...

Der neue TypeScript-Schnellstart-Übungsbericht des Partners Vue

Inhaltsverzeichnis 1. Bauen Sie mit dem offiziell...

Die Verwendung und der Unterschied zwischen vue3 watch und watchEffect

1. Hörer ansehen Vorstellung der Uhr importiere {...

MySql legt die angegebenen Benutzerdatenbankansichtsabfrageberechtigungen fest

1. Neuen Benutzer anlegen: 1. Führen Sie eine SQL...

Ausführliche Erklärung der Sonderberechtigungen SUID, SGID und SBIT in Linux

Vorwort Für die Berechtigungen von Dateien oder V...