In diesem Artikel werden die Techniken zur Verwendung von Maven Docker -Bildern vorgestellt und sie wie folgt mit Ihnen teilt:
Maven ist derzeit eines der beliebtesten Java -Projektmanagement -Tools und bietet leistungsstarke Funktionen für Paketabhängigkeit und Anwendungskonstruktionen.
Docker bietet offizielle Maven -Bilder, mit denen Java -Anwendungen verwaltet und erstellt werden können. Im Vergleich zur direkten Installation des Maven -Tools hat die Verwendung von Docker -Bildern eine bessere Portabilität und kann leicht umgeschaltet werden, was ideal für die Verwendung während der kontinuierlichen Integration ist.
Für die Verwendung von Maven Official Mirror finden Sie in der Verwendungsdokumentation.
Verwendung von Alibaba Cloud zur Beschleunigung
Die Download -Geschwindigkeit von Mavens offiziellem Lager im heimischen Netzwerk ist wirklich herzzerreißend. Die Verwendung von Alibaba Cloud von Maven Image kann die Download -Geschwindigkeit von Softwarepaketen erheblich verbessern.
Wir können die Alibaba -Cloud -Bildkonfiguration basierend auf dem offiziellen Maven -Bild hinzufügen. Sein Code ist unter https://github.com/aliyuncontainerservice/maven-image verfügbar
Die Konfigurationsdateieinstellungen.xml lautet wie folgt
<Einstellungen xmlns = "http://maven.apache.org/setings/1.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation https://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>/usr/share/maven/ref/repository</localRepository> <mirrors> <mirror> <!--This sends everything else to /public --> <id>aliyun-nexus</id> <mirrorOf>*</mirrorOf> <Url> http://maven.aliyun.com/nexus/content/groups/public/ </url> </minor> <minor> <! <Mirorof> public-snapshots </minorof> <URL> http://maven.aliyun.com/nexus/content/repoories/snapshots/ </url> </mirror> </mirrors> </settings>
Der Alibaba Cloud Container Service bietet vorgefertigte Docker-Bilder zur direkten Verwendung von Registry.cn-hangzhou.aliyuncs.com/acs/maven.
Wir können den folgenden Befehl direkt im aktuellen Verzeichnis ausführen, wie bei der Verwendung des Befehls mVN, um die Anwendung zu erstellen
Kopieren Sie den Code wie folgt: Docker run -it - -rm --Name maven -v "$ (pwd)":/usr/src/app -w/usr/src/App Registry.cn-hangzhou.aliyuncs.com/acs/maven MVN Clean Installation
Wenn Sie das heruntergeladene Maven -Repository zwischenspeichern möchten, können wir das Dateivolumen von Docker verwenden, um es zu implementieren
Führen Sie zunächst den folgenden Befehl aus, um ein Dateivolumen mit dem Namen "Maven-Repo" zu erstellen
Docker-Volumen erstellen-Name Maven-Repo
Machen Sie es im nachfolgenden Anruf in das Repository -Download -Verzeichnis im Maven -Bild
Kopieren Sie den Code wie folgt: Docker run -it - -rm --Name maven -v "$ (pwd)":/usr/src/app -v maven -repo:/usr/shang/maven/ref -w/usr/src/App Registry.cn -hangzhou.aliyuncs.com/acs/mavs
Auf diese Weise wird das Maven -Repository nicht jedes Mal heruntergeladen.
Optimieren Sie Dockerfile, um die Build -Geschwindigkeit zu verbessern
Wir können Anwendungen in Dockerfile erstellen und den hierarchischen Caching -Mechanismus während der Docker -Konstruktion verwenden, um die Build -Geschwindigkeit zu verbessern
Hier ist eine Beispieldatei dockerfile.build -Datei
Von registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8env my_home =/usr/src/stimm MKDIR -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home# Get alle Downloads aus dem Wayrun heraus, ["/usr/local/bin/mvn-entrypoint.sh","mvn" $ My_home# run maven verifyrun ["/usr/local/bin/mvn-entrypoint.sh"
Einer der wichtigen Tricks besteht darin, zuerst Pom.xml zum Arbeitsverzeichnis hinzuzufügen, mit dem Befehl maven das von der Anwendung erforderliche JAR -Paket herunterzuladen und dann die Anwendungsquellendatei zur Kompilierung hinzuzufügen. Auf diese Weise wird das Abhängigkeits-JAR-Paket nicht neu geladen, solange die POM.xml nicht aktualisiert wird, die die Bildungsgeschwindigkeit der Bildkonstruktion erheblich beschleunigen kann.
Wir können die Anwendung über den folgenden Befehl kompilieren
Docker Build -t Builder -IMG -f dockerfile.build.
Separate Anwendungskompilierung und Docker -Bildkonstruktion
Für statische kompilierte Sprachen müssen wir normalerweise den Anwendungskompilierungsprozess vom Spiegelkonstruktionsprozess trennen. Es gibt zwei Hauptüberlegungen:
Wir können die Anwendungskompilierungsergebnisse aus dem Docker -Bild wie folgt kopieren
Docker Build -t Builder -IMG -f Dockerfile.build .docker create --Name Builder Builder -Imgdocker CP Builder:/usr/src/app/target ./target
Zu diesem Zeitpunkt wird das Ergebnis der Maven -Konstruktion in das "Ziel" -Subdadum des aktuellen Verzeichnisses kopiert.
Danach können wir eine andere Dockerfile verwenden, um Anwendungsbilder zu erstellen. Ich werde nicht in Details eingehen, wenn ich nur begrenzt Platz habe.
Zusammenfassen
In diesem Artikel wird Maven als Beispiel verwendet, um einige gemeinsame Techniken für Docker in der Anwendungskonstruktion einzuführen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.