Hogyan automatizálható a Docker konténer telepítése a Mavenen keresztül

Ez a cikk azoknak szól, akik a Maven-t JavaA-alkalmazások build és függőségkezelő eszközeként használják. Megmutatja, hogyan lehet integrálni a dokkoló-tároló összeállítását, a címkézést és a munkafolyamatok meglévő Maven-összeállítás-kezelő ökoszisztémájába való integrálását.

Az a lehetőség, hogy az alkalmazást tárolóként építheti fel, címkézheti és tolhatja le közvetlenül a Maven életciklus-parancsaitól, nagyon jó dolog. Csak megkönnyíti és gyorsabbá teszi a dolgokat, ha a tárolók erejét próbálja meghonosítani az alkalmazások telepítéséhez, és minden készen áll a Maven használatával a függőségkezeléshez.

Ha megnézzük a dokkoló-konténer telepítésének a Mavenbe történő integrálásának meglévő megoldásait, akkor több ilyen is létezik, például spotify maven docker plugin, fabric8io docker maven plugin stb. Mindezek a megoldások azonban nemkívánatos bonyolultságot, további tanulási görbét és túl sokat hoznak váltson a meglévő alkalmazáskódra. Ennek elérésére azonban egyszerűbb és egyszerűbb mód van harmadik féltől származó pluginok használata nélkül.

Ha megjegyzi a Maven Ant pluginjét, az lehetővé teszi számunkra a külső parancsok futtatását. Tehát az Ant beépülő modul használatával képesek vagyunk futtatni a docker buildet, címkézni, nyomni vagy bármilyen parancsot tetszés szerint. Az egyetlen dolog, amit meg kell tennünk, hogy megfelelő Docker fájlt biztosítunk az alkalmazáshoz szükséges Docker kép, valamint a szükséges parancsok és Maven konfigurációk készítéséhez a pom.xml fájlba.

Az ebben a folyamatban szereplő lépések elmagyarázásához egy minta JAVA alkalmazást fogok használni. Ez tartalmazza a következő lépésekben használt összes kódmintát. Innen klónozhatja.

1. lépés | Hozza létre a Dockerfile fájlt

A Dockerfile-t az src / main / docker / Dockerfile útvonalon kell tárolni JAVA alkalmazásának.
# 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. lépés | Frissítse a pom.xml fájlt, hogy az összes Dockerrel kapcsolatos erőforrást átmásolja a célkönyvtárba

Az erőforrások másolásához használhatjuk a maven-resource-plugint.
 maven-resources-plugin   copy-resources validate  copy-resources   ${basedir}/target;   src/main/docker true     

3. lépés | Frissítse a pom.xml fájlt, hogy lehetővé tegye a Docker kép felépítését és címkézését a Maven Ant beépülő modulján keresztül


     
     
      org.apache.maven.plugins
      1.6
     
       prepare-package 
      
       package 
       
        false 
        
          ; 
         run 
       
      
     
    

A Maven Ant plugin a következő sorrendben hajtja végre a docker parancsot a Maven életciklusának csomagfázisában, amely a Dockerfile fájlból építi fel a docker képet, amelyet a 2. lépésben a célmappába másoltak.

docker build -t dockermavensample:1.0.0 target

4. lépés | Frissítse a pom.xml fájlt, hogy lehetővé tegye a Docker Image eltávolítását a távoli Docker-tárházba

Ideális a gyártáshoz, ha be kell tolnia a Docker képeket a saját Docker nyilvántartásába, vagy egy harmadik féltől származó Docker képtárat kell használni, amely lehetővé teszi a privát Docker képek tárolását, hogy mások ne tudják közvetlenül meghúzni a Docker képeket.
 org.apache.maven.plugins; maven-antrun-plugin 1.6 ;  install false 
    
      
       run 
     
    

A fenti lépéseken kívül érdemes ellenőriznie, hogy miként futtatja ezeket a dokkolóval kapcsolatos parancsokat a Maven életciklusában. Ehhez a Maven profilok segítségével logikusan oszthatja meg a plugin definíciókat. Ezután csak akkor hajtsa végre ezeket, amikor az adott művelettel kapcsolatos profilt meghívja.

Vessen egy pillantást a következő mintaprofilokra:


    
      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 
      
     
    

A fenti lépések végrehajtása után fusson

mvn clean install -P dockerBuild,dockerRelease

Now your JAVA application is packaged as a container and pushed into a remote docker repository as well. You can test whether the image you created is working by running following commands,

As you can see we can use already available Maven features and plugins to create a well-structured build pipeline for deploying our applications as containers.

Sample Project:

rav94/dockermavensample

Demo Project for showcasing Automating Container Deployment via Maven - rav94/dockermavensamplegithub.com

Thanks for reading!