Πώς να αυτοματοποιήσετε την ανάπτυξη κοντέινερ Docker μέσω Maven
Αυτό το άρθρο προορίζεται για άτομα που χρησιμοποιούν το Maven ως εργαλείο διαχείρισης δόμησης και εξάρτησης για εφαρμογές JAVA. Θα σας δείξει πώς να ενσωματώσετε την κατασκευή κοντέινερ, να προσθέσετε ετικέτες και να προωθήσετε τις ροές εργασίας στο υπάρχον οικοσύστημα διαχείρισης κατασκευής Maven.
Το να έχετε τη δυνατότητα να δημιουργήσετε, να προσθέσετε ετικέτες και να προωθήσετε την εφαρμογή σας ως κοντέινερ απευθείας από τις εντολές του κύκλου ζωής του Maven είναι πολύ ωραίο να έχετε. Απλώς κάνει τα πράγματα εύκολα και γρήγορα, αν προσπαθείτε να αποκτήσετε τη δύναμη των κοντέινερ για την ανάπτυξη των εφαρμογών σας και όλα έτοιμα χρησιμοποιώντας το Maven για διαχείριση εξάρτησης.
Εάν ρίξουμε μια ματιά στις υπάρχουσες λύσεις για την ενσωμάτωση της ανάπτυξης κοντέινερ docker στο Maven, υπάρχουν αρκετές εκεί έξω, όπως το plugify maven docker plugin, το fabric8io docker maven plugin κ.λπ. Αλλά όλες αυτές οι λύσεις φέρνουν ανεπιθύμητη πολυπλοκότητα, επιπλέον καμπύλη μάθησης και πάρα πολλά αλλαγή στον υπάρχοντα κωδικό εφαρμογής σας. Ωστόσο, υπάρχει ένας απλούστερος και εύκολος τρόπος για να το επιτύχετε χωρίς τη χρήση πρόσθετου τρίτου μέρους.
Εάν παρατηρήσετε το πρόσθετο Maven's Ant, μας επιτρέπει να εκτελούμε εξωτερικές εντολές. Έτσι, χρησιμοποιώντας το πρόσθετο Ant, έχουμε τη δυνατότητα να εκτελέσουμε το docker build, το tag, το push ή οποιαδήποτε εντολή όπως θέλετε. Το μόνο που πρέπει να κάνουμε είναι να παρέχουμε ένα κατάλληλο Dockerfile για τη δημιουργία της εικόνας Docker για την εφαρμογή σας και το απαραίτητο σύνολο εντολών και διαμορφώσεων Maven στο αρχείο pom.xml.
Για να εξηγήσω τα βήματα που εμπλέκονται σε αυτήν τη διαδικασία, θα χρησιμοποιήσω ένα δείγμα εφαρμογής JAVA. Περιέχει όλα τα δείγματα κώδικα που χρησιμοποιούνται στα ακόλουθα βήματα. Μπορείτε να το κλωνοποιήσετε από εδώ.Βήμα 1 | Δημιουργήστε το Dockerfile
Το Dockerfile πρέπει να αποθηκευτεί στη διαδρομή src / main / docker / Dockerfile της εφαρμογής JAVA.# Pull base imageFROM tomcat:8.0.30-jre7# MaintainerMAINTAINER "[email protected]"
# Set Environment propertiesENV JAVA_OPTS=-Denvironment=production# Copy war file to tomcat webapps folderCOPY /dockermavensample.war /usr/local/tomcat/webapps/
Βήμα 2 | Ενημερώστε το pom.xml για να αντιγράψετε όλους τους πόρους που σχετίζονται με το Docker στον κατάλογο προορισμού
Μπορούμε να χρησιμοποιήσουμε το maven-resource-plugin για να αντιγράψουμε πόρους. maven-resources-plugin copy-resources validate copy-resources ${basedir}/target; src/main/docker true
Βήμα 3 | Ενημερώστε το pom.xml για να επιτρέψετε τη δημιουργία και την επισήμανση της εικόνας Docker μέσω της προσθήκης Maven's Ant
org.apache.maven.plugins
1.6
prepare-package
package
false
;
run
Το Maven's Ant plugin θα εκτελέσει την εντολή docker στη φάση πακέτου του κύκλου ζωής Maven με την ακόλουθη σειρά, η οποία θα δημιουργήσει την εικόνα του docker από το Dockerfile που αντιγράφηκε στο φάκελο προορισμού στο βήμα 2.
docker build -t dockermavensample:1.0.0 target
Βήμα 4 | Ενημερώστε το αρχείο pom.xml για να επιτρέψετε την προώθηση του Docker Image σε απομακρυσμένο αποθετήριο Docker
Ιδανικά για παραγωγή, θα πρέπει να σπρώξετε τις εικόνες Docker στο δικό σας ιδιωτικό μητρώο Docker ή να χρησιμοποιήσετε ένα αποθετήριο εικόνων Docker τρίτου μέρους που επιτρέπει την αποθήκευση ιδιωτικών εικόνων Docker, έτσι ώστε οι άλλοι να μην μπορούν να τραβήξουν τις εικόνες Docker σας απευθείας. org.apache.maven.plugins; maven-antrun-plugin 1.6 ; install false
run
Εκτός από τα παραπάνω βήματα, ίσως θελήσετε να έχετε τον έλεγχο του τρόπου με τον οποίο εκτελείτε αυτές τις εντολές που σχετίζονται με το docker στον κύκλο ζωής του Maven. Για αυτό, μπορείτε να χρησιμοποιήσετε τα προφίλ Maven για να διαιρέσετε λογικά τους παραπάνω ορισμούς προσθηκών. Στη συνέχεια, εκτελέστε τα μόνο όταν γίνεται επίκληση του προφίλ που σχετίζεται με αυτήν την ενέργεια.
Ρίξτε μια ματιά στα ακόλουθα δείγματα προφίλ:
dockerBuild maven-resources-plugin
copy-resources validate;
copy-resources
${basedir}/target
src/main/dockertrue ;
org.apache.maven.plugins maven-antrun-plugin 1.6
prepare-package
package false
run
true;
dockerRelease
org.apache.maven.plugins
maven-antrun-plugin 1.6
install
false
run
Αφού ολοκληρώσετε τα παραπάνω βήματα, απλώς εκτελέστε
mvn clean install -P dockerBuild,dockerRelease
Τώρα η εφαρμογή JAVA συσκευάζεται ως κοντέινερ και ωθείται και σε αποθήκη απομακρυσμένης σύνδεσης. Μπορείτε να ελέγξετε εάν η εικόνα που δημιουργήσατε λειτουργεί με την εκτέλεση των ακόλουθων εντολών,




Όπως μπορείτε να δείτε, μπορούμε να χρησιμοποιήσουμε ήδη διαθέσιμες δυνατότητες και πρόσθετα του Maven για να δημιουργήσουμε έναν καλά δομημένο αγωγό κατασκευής για την ανάπτυξη των εφαρμογών μας ως κοντέινερ.
Δείγμα έργου:
rav94 / dockermavensample
Επίδειξη έργου για την προβολή της αυτοματοποίησης ανάπτυξης κοντέινερ μέσω Maven - rav94 / dockermavensample github.com
Ευχαριστώ για την ανάγνωση!