Kako automatizirati postavljanje Docker spremnika putem Mavena

Ovaj je članak namijenjen ljudima koji koriste Maven kao alat za izgradnju i upravljanje ovisnostima za JAVA aplikacije. Pokazat će vam kako integrirati tijekove izrade spremnika, označavati i gurati tijekove rada u njihov postojeći Maven ekosustav za upravljanje gradnjom.

Imati mogućnost izrade, označavanja i guranja vaše aplikacije kao spremnika odmah nakon naredbi Mavenovog životnog ciklusa prilično je zgodna stvar. To jednostavno čini stvari jednostavnim i brzim ako pokušavate unijeti snagu spremnika za razmještanje vaših aplikacija i potpuno spremne koristeći Maven za upravljanje ovisnostima.

Ako pogledamo postojeća rješenja za integriranje postavljanja docker spremnika u Maven, postoji nekoliko takvih, poput spotify maven docker dodatak, fabric8io docker maven dodatak itd. Ali sva ta rješenja donose neželjenu složenost, dodatnu krivulju učenja i previše promijenite u postojeći kod aplikacije. Ipak postoji jednostavniji i lakši način da se to postigne bez upotrebe bilo kojeg dodatka treće strane.

Ako primijetite Mavenov dodatak Ant, omogućuje nam pokretanje vanjskih naredbi. Dakle, korištenjem dodatka Ant, imamo mogućnost pokretanja gradnje dockera, označavanja, guranja ili bilo koje naredbe po želji. Jedino što moramo učiniti je osigurati odgovarajuću Dockerfile za izgradnju Docker slike za vašu aplikaciju i potreban skup naredbi i Maven konfiguracija u datoteku pom.xml.

Za objašnjavanje koraka koji su uključeni u ovaj postupak, poslužit ću se primjerom JAVA aplikacije. Sadrži sve uzorke koda korištene u sljedećim koracima. Možete ga klonirati odavde.

Korak 1 | Stvorite Dockerfile

Dockerfile treba biti pohranjen na putu src / main / docker / Dockerfile vaše JAVA aplikacije.
# 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/

Korak 2 | Ažurirajte pom.xml da biste kopirali sve resurse povezane s Dockerom u ciljni direktorij

Za kopiranje resursa možemo koristiti dodatak maven-resource-plugin.
 maven-resources-plugin   copy-resources validate  copy-resources   ${basedir}/target;   src/main/docker true     

Korak 3 | Ažurirajte pom.xml kako biste omogućili izgradnju i označavanje Dockerove slike putem Mavenova dodatka Ant


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

Mavenov dodatak Ant izvršit će naredbu docker u fazi paketa Mavenovog životnog ciklusa sljedećim redoslijedom, čime će se izraditi slika dockera iz datoteke Docker koja je kopirana u ciljnu mapu u koraku 2.

docker build -t dockermavensample:1.0.0 target

Korak 4 | Ažurirajte datoteku pom.xml kako biste omogućili guranje slike Dockera u udaljeno spremište Dockera

Idealno za proizvodnju, morali biste svoje Docker slike gurnuti u vlastiti privatni Docker registar ili koristiti spremište slika Dockera treće strane koje omogućuje pohranu privatnih Dockerovih slika tako da drugi ne mogu izravno povući vaše Dockerove slike.
 org.apache.maven.plugins; maven-antrun-plugin 1.6 ;  install false 
    
      
       run 
     
    

Uz gornje korake, možda ćete htjeti imati kontrolu nad tim kako izvršavate ove naredbe povezane s dockerom u vašem Maven životnom ciklusu. Za to možete koristiti Maven profile da biste logički podijelili gore definicije dodataka. Zatim ih izvršite samo kada se pozove profil povezan s tom radnjom.

Pogledajte sljedeće uzorke profila:


    
      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 
      
     
    

Nakon što dovršite gornje korake, samo pokrenite

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!