Este artículo está dirigido a personas que utilizan Maven como una herramienta de gestión de dependencias y compilación para aplicaciones JAVA. Le mostrará cómo integrar la compilación de contenedores de Docker, etiquetar e impulsar los flujos de trabajo en su ecosistema de administración de compilación de Maven existente.
Tener la capacidad de construir, etiquetar y enviar su aplicación como un contenedor directamente desde los comandos del ciclo de vida de Maven es algo muy bueno. Simplemente hace las cosas fáciles y rápidas si está tratando de aprovechar el poder de los contenedores para implementar sus aplicaciones y todo listo con Maven para la administración de dependencias.
Si echamos un vistazo a las soluciones existentes para integrar la implementación del contenedor de la ventana acoplable en Maven, hay varias, como el complemento Spotify Maven Docker, el complemento Fabric8io Docker Maven, etc. Pero todas estas soluciones aportan una complejidad no deseada, una curva de aprendizaje adicional y demasiado. cambie a su código de aplicación existente. Sin embargo, existe una manera más simple y fácil de lograr esto sin el uso de ningún complemento de terceros.
Si observa el complemento Ant de Maven, nos permite ejecutar comandos externos. Entonces, al usar el complemento Ant, tenemos la capacidad de ejecutar la compilación de docker, etiquetar, empujar o simplemente cualquier comando que desee. Lo único que tenemos que hacer es proporcionar un Dockerfile adecuado para crear la imagen de Docker para su aplicación y el conjunto necesario de comandos y configuraciones de Maven en el archivo pom.xml.
Para explicar los pasos involucrados en este proceso, usaré una aplicación JAVA de muestra. Contiene todos los ejemplos de código utilizados en los siguientes pasos. Puedes clonarlo desde aquí.Paso 1 | Crea el Dockerfile
Dockerfile debe almacenarse dentro de la ruta src / main / docker / Dockerfile de su aplicación 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/
Paso 2 | Actualice pom.xml para copiar todos los recursos relacionados con Docker en el directorio de destino
Podemos usar maven-resource-plugin para copiar recursos. maven-resources-plugin copy-resources validate copy-resources ${basedir}/target; src/main/docker true
Paso 3 | Actualice pom.xml para permitir la creación y etiqueta de la imagen de Docker a través del complemento Ant de Maven
org.apache.maven.plugins
1.6
prepare-package
package
false
;
run
El complemento Ant de Maven ejecutará el comando de la ventana acoplable en la fase del paquete del ciclo de vida de Maven en el siguiente orden, lo que generará la imagen de la ventana acoplable a partir del archivo Docker que se copió en la carpeta de destino en el paso 2.
docker build -t dockermavensample:1.0.0 target
Paso 4 | Actualice el archivo pom.xml para permitir enviar la imagen de Docker al repositorio de Docker remoto
Idealmente para la producción, tendría que enviar sus imágenes de Docker a su propio registro de Docker privado o usar un repositorio de imágenes de Docker de terceros que permita almacenar imágenes de Docker privadas para que otros no puedan extraer sus imágenes de Docker directamente. org.apache.maven.plugins; maven-antrun-plugin 1.6 ; install false
run
Además de los pasos anteriores, es posible que desee tener control sobre cómo está ejecutando estos comandos relacionados con Docker en su ciclo de vida de Maven. Para eso, puede usar los perfiles de Maven para dividir lógicamente las definiciones de complementos anteriores. Luego, ejecútelos solo cuando se invoque el perfil relacionado con esa acción.
Eche un vistazo a los siguientes perfiles de muestra:
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
Después de completar los pasos anteriores, simplemente ejecute
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!