Πώς να αυτοματοποιήσετε την ανάπτυξη κοντέινερ 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

Ευχαριστώ για την ανάγνωση!