Detaillierte Verwendung des Docker-Maven-Plugins

Detaillierte Verwendung des Docker-Maven-Plugins

Docker-Maven-Plugin

Es gibt zwei Möglichkeiten, Microservices bereitzustellen:

  • Manuelle Bereitstellung: Generieren Sie zunächst ein JAR-Paket (oder War-Paket) basierend auf der Quellcode-Verpackung, schreiben Sie eine Dockerfile-Datei, erstellen Sie ein neues Image basierend auf dem Basis-Image, laden Sie das JAR-Paket (oder War-Paket) auf die virtuelle Maschine hoch und kopieren Sie es in den JDK-Container. (Zu viel Ärger)
  • Automatische Bereitstellung über Maven-Plugin. Dies ist auch eine Methode, die in der tatsächlichen Unternehmensentwicklung häufig verwendet wird.

Schritte zur automatischen Bereitstellung des Maven-Plugins

Am Anfang geschrieben: Diese Methode hat Schlupflöcher und kann von Hackern leicht aus der Ferne in das Image der Mining-Maschine eingefügt werden. Seien Sie bei der Verwendung vorsichtig. Wenn 2375 geöffnet ist und keine IP-Einschränkung auferlegt wird, wird es ins Mining einbezogen. . . Es wird empfohlen, den CA-Verschlüsselungsport zu verwenden

1. Ändern Sie die Docker-Konfiguration des Host-Rechners und öffnen Sie Port 2375, um Remote-Zugriff zu ermöglichen

Die lokale Ausführung des Maven-Befehls ist ein Remote-Vorgang für den Host-Computer. Der Remote-Vorgang von Docker ist standardmäßig geschlossen. Öffnen Sie zuerst Port 2375.

Führen Sie zunächst den Befehl auf dem Hostcomputer aus und ändern Sie die Konfigurationsdatei (CentOS 7).

vi /lib/systemd/system/docker.service

Konfiguration nach ExecStart= ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock hinzufügen

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

unix://var/run/docker.sock : Unix-Socket, lokale Clients verwenden dies, um eine Verbindung zum Docker-Daemon herzustellen.

tcp://0.0.0.0:2375 : TCP-Socket, was bedeutet, dass jeder Remote-Client über Port 2375 eine Verbindung zum Docker-Daemon herstellen darf.

erweisen sich als

Nach

Wenn es CentOS7 ist, ändern Sie Folgendes

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2. Aktualisieren Sie die Konfiguration und starten Sie den Dienst neu

systemctl daemon-reload //Docker-Daemon-Thread laden systemctl restart docker //Docker neu starten

3. Container-Firewall konfigurieren

Auch wenn Port 2375 geöffnet ist, ist ein Zugriff von außen nicht möglich, sondern nur von innen. Sie müssen die Firewall konfigurieren. Wenn Alibaba Cloud nicht konfiguriert ist, achten Sie darauf, nicht in den Mining-_- hineingezogen zu werden. Dies ist mein Schulserver. Sie benötigen ein VPN, um darauf zuzugreifen. Das spielt keine Rolle.

Dies ist geschlossen.

Verwenden Sie den Befehl systemctl stop firewalld (schalten Sie die Firewall aus).
systemctl disable firewalld (Deaktivieren Sie die Firewall, sie wird beim Booten nicht gestartet)

Selinux ausschalten

vi /etc/selinux/config, ändere SELINUX=enforcing auf disabled

Bildbeschreibung hier einfügen

Nachdem der Neustart abgeschlossen ist, überprüfen Sie den Firewall- und Selinux-Status

systemctl status firewalld (Firewall-Status prüfen)
Sekunde (Selinux-Status prüfen) 

Bildbeschreibung hier einfügen

Alibaba Cloud empfiehlt die Konfiguration von Sicherheitsfluchen

Zu diesem Zeitpunkt habe ich mich mit docker verbunden und es ist mir gelungen

4. Konfiguration in pom.xml hinzufügen

Dockerfile wird automatisch mit der folgenden Konfiguration generiert

<Bauen>
        <finalName>testDocker</finalName>
        <Plugins>

            <Plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>Spring-Boot-Maven-Plugin</artifactId>
            </plugin>

            <!--Docker-Maven-Plugin-->
            <Plugin>
                <groupId>com.spotify</groupId>
                <artifactId>Docker-Maven-Plugin</artifactId>
                <version>1.1.0</version>
                <!--Konfigurationsabschnitt-->
                <Konfiguration>
                    <!--Ändern Sie den Inhalt des ImageName-Knotens in die Adresse und den Port des privaten Lagers sowie die Bild-ID und den TAG. Wir möchten ihn direkt auf den privaten Server übertragen-->
                    <!--Konfigurieren Sie den endgültigen Namen des generierten Images. In Docker-Images übernehmen wir den Projektnamen: Version -->
                    <imageName>172.19.240.208:5000/${project.artifactId}:${project.version}</imageName>
                    <!--Basisimage, entspricht from--> im Dockerfile
                    <baseImage>ascdc/jdk8</baseImage>
                    <!--Einstiegspunkt, project.build.finalName ist der Inhalt des Dateinamen-Tags unter dem Build-Tag unter dem Projekt-Tag, testDocker-->
                    <!--Entspricht dem Starten des Containers, java-jar/testDocker.jar wird automatisch ausgeführt-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <!--Gibt an, ob in ein privates Docker-Warehouse gepusht werden soll-->
                    <pushImage>wahr</pushImage>
                    <registryUrl>172.19.240.208:5000</registryUrl>

                    <Ressourcen>
                        <Ressource>
                            <Zielpfad>/</Zielpfad>
                            <Verzeichnis>${project.build.directory}</Verzeichnis>
                            <!--Welche Datei wird in Docker hochgeladen, entspricht dem Hinzufügen von testDocker.jar in Dockerfile /-->
                            <include>${project.build.finalName}.jar</include>
                        </Ressource>
                    </Ressourcen>
                    <dockerHost>http://172.19.240.208:2375</dockerHost>
                </Konfiguration>
            </plugin>
        </plugins>
    </bauen>

Beachten Sie, dass es drei Punkte gibt, die in ein privates Repository verschoben werden müssen. Voraussetzung ist, dass sich der Container im gestarteten Zustand befindet.

<!-- 1. Fügen Sie einen RegistryUrl-Knoten hinzu, der Inhalt ist die private Lageradresse und der Port (ich habe hier Port 5000 eingestellt) -->
<registryUrl>Ihre IP:5000</registryUrl>

<!-- 2. PushImage-Knoten hinzufügen-->
<pushImage>wahr</pushImage>

<!-- 3. Ändern Sie den Inhalt des ImageName-Knotens in die Adresse und den Port des privaten Lagers, fügen Sie die Bild-ID und das TAG hinzu und der Name im Lager ist Ihr Projektname: Version-->
<imageName>IhreIP:5000/${project.artifactId}:${project.version}</imageName>

Führen Sie mvn clean und mvn install aus und legen Sie es zuerst im lokalen Repository ab.

[Bildübertragung über externen Link fehlgeschlagen. Die Quellseite verfügt möglicherweise über einen Anti-Hotlink-Mechanismus. Es wird empfohlen, das Bild zu speichern und direkt hochzuladen (img-84l0HMwJ-1579593153706)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214402887.jpg)]

Führen Sie dann mvn docker:build um das Image zu erstellen. Wenn Sie es hochladen möchten, fügen Sie den Parameter -DpushImage hinzu

[Bildübertragung über externen Link fehlgeschlagen. Die Quellseite verfügt möglicherweise über einen Anti-Hotlink-Mechanismus. Es wird empfohlen, das Bild zu speichern und direkt hochzuladen (img-wdYBT027-1579593153707)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214544482.jpg)]

Beim Ausführen ist ein Fehler aufgetreten

[FEHLER] Ziel com.spotify:docker-maven-plugin:1.1.0:build (Standard-CLI) konnte in der Projektdemo nicht ausgeführt werden:
Ausnahme abgefangen: Pull-Zugriff für jdk1.8 verweigert, Repository existiert nicht oder erfordert möglicherweise „Docker-Login“:
verweigert: der angeforderte Zugriff auf die Ressource wurde verweigert -> [Hilfe 1]

Ich habe bei Baidu nachgeschaut und viele Leute sagten, dass ich mich anmelden muss. Tatsächlich muss ich mich nicht anmelden und das Repository existiert auch nicht. Tatsächlich gibt es keine jdk1.8-Image-Datei auf meinem Docker und ich muss selbst eine herunterladen. Ich kann im Docker nach jdk8 suchen und eine ziehen oder das Tar-Paket selbst hochladen und dann mit Dockerfile eine erstellen. Ich habe direkt einen gezogen

Bildbeschreibung hier einfügen

docker images

Bildbeschreibung hier einfügen

Ändern des Basisbildnamens im Projekt

Bildbeschreibung hier einfügen

Erfolgreich gebaut und vorangetrieben

Bildbeschreibung hier einfügen

[Bildübertragung über externen Link fehlgeschlagen. Die Quellseite verfügt möglicherweise über einen Anti-Hotlink-Mechanismus. Es wird empfohlen, das Bild zu speichern und direkt hochzuladen (img-SAUhrnA3-1579593153710)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200121154702289.jpg)]

Bildbeschreibung hier einfügen

Spiegel anzeigen

Bildbeschreibung hier einfügen

Lager anzeigen

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über die detaillierte Verwendung des Docker-Maven-Plugins. Weitere Informationen zur Verwendung des Docker-Maven-Plugins finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Das Docker-Maven-Plugin-Plugin kann das entsprechende JAR-Paket nicht abrufen
  • Zusammenfassung der Dockerfile-Maven-Plugin-Nutzungsanleitung
  • Verwendung des Maven-Plugins docker-maven-plugin
  • minimalistisches Dockerfile-Maven-Plugin-Tutorial (empfohlen)
  • Erfahren Sie, wie Sie mit dem Docker-Maven-Plugin die Bereitstellung automatisieren

<<:  MySQL-Datenbank Shell import_table Datenimport

>>:  Lösung zur Definition der Mindestspannweite hat keine Auswirkung

Artikel empfehlen

Zusammenfassung der Browserkompatibilität gängiger CSS-Eigenschaften (empfohlen)

Warum müssen wir die Browserkompatibilität von CS...

So implementieren Sie ein Glücksradspiel im WeChat-Applet

Ich stelle hauptsächlich vor, wie man im WeChat-A...

Natives js zur Realisierung der Bild-Upload-Steuerung

In diesem Artikelbeispiel wird der spezifische Co...

Ich habe ein paar coole Designseiten zusammengestellt, die ich gut finde.

Sie müssen Inspiration haben, um eine Website zu g...

So verwenden Sie vue.js zum Implementieren der Drag & Drop-Funktion

Vorwort Durch das Hinzufügen einer Drag & Dro...

Verwendung des Linux-Befehls „cal“

1. Befehlseinführung Mit dem Befehl cal (Kalender...

JS implementiert den Beispielcode der Dezimalkonvertierung in Hexadezimal

Vorwort Beim Schreiben von Code stoßen wir gelege...

So zeigen Sie MySQL-Links an und löschen abnormale Links

Vorwort: Während des Betriebs und der Wartung der...