Este artículo presenta las técnicas para usar imágenes de Docker Maven y las comparte con usted, como sigue:
Maven es una de las herramientas de gestión de proyectos Java más populares en la actualidad, proporcionando potentes gestión de dependencia de paquetes y funciones de construcción de aplicaciones.
Docker proporciona imágenes Maven oficiales que se pueden usar para administrar y construir aplicaciones Java. En comparación con la instalación directa de la herramienta Maven, el uso de imágenes de Docker tiene una mejor portabilidad y se puede cambiar fácilmente versiones, lo cual es ideal para su uso durante la integración continua.
Para el uso del espejo oficial de Maven, consulte la documentación de uso.
Uso de la nube de Alibaba para acelerar
La velocidad de descarga del almacén oficial de Maven en la red nacional es realmente desgarradora. El uso de la imagen Maven de Alibaba Cloud puede mejorar en gran medida la velocidad de descarga de los paquetes de software.
Podemos agregar la configuración de la imagen en la nube de Alibaba basada en la imagen oficial de Maven. Su código está disponible en https://github.com/aliyuncontainerservice/maven-image
Su archivo de configuración settings.xml es el siguiente
<Configuración xmlns = "http://maven.apache.org/settings/1.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschemainstance" xsi: schemalocation = "http://maven.apache.org/settings https://maven.apache.org/xsd/settings-1.0.0.xsd "> <LocalRepository>/usr/share/maven/ref/Repository </localRepository> <prirrors> <prirror> <!-Esto envía todo lo demás a/público-> <d> aliyun-nexus </id> <firrorf <Url> http://maven.aliyun.com/nexus/content/groups/public/ </sl> </prror> <prirror> <! <precorof> public-snapshots </prrorof> <url> http://maven.aliyun.com/nexus/content/repositories/snapshots/ </ url> </espejo> </espejo> </formes>
Alibaba Cloud Container Service proporciona imágenes de Docker preconstruidas para el uso directo de Registry.cn-Hangzhou.aliyunc.com/acs/maven.
Podemos ejecutar directamente el siguiente comando en el directorio actual, como usar el comando MVN para construir la aplicación
Copie el código de la siguiente manera: Docker Run -it - -Rm - -Name maven -v "$ (pwd)":/usr/src/app -w/usr/src/app registry.cn -hangzhou.aliyunc.com/acs/maven mvn instalación
Si desea poder almacenar en caché el repositorio de Maven descargado, podemos usar el volumen de archivos de Docker para implementarlo
Primero, ejecute el siguiente comando para crear un volumen de archivo llamado "Maven-Repo"
Docker Volume Create--Name Maven-Repo
En la llamada posterior, monte al directorio de descarga del repositorio en la imagen maven
Copie el código de la siguiente manera: Docker Run -it - -Rm - -Name maven -v "$ (pwd)":/usr/src/app -v maven -repo:/usr/share/maven/ref -w/usr/src/app registry.cn -hangzhou.aliyunc.
De esta manera, el repositorio de Maven no se descargará cada vez.
Optimizar Dockerfile para mejorar la velocidad de compilación
Podemos construir aplicaciones en Dockerfile y usar el mecanismo de almacenamiento de almacenamiento jerárquico durante la construcción de Docker para mejorar la velocidad de construcción
Aquí hay una muestra DockerFile.Build File
Del registro.cn-hangzhou.aliyunc.com/acs/maven:3-jdk-8env my_home =/usr/src/topun mkdir -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home# salga de las descargas de la forma de runrun ["/usr/local/bin/mvn-entrypoint.sh","mvn", cada $ My_home# ejecutar maven Verifyrun ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]
Uno de los trucos importantes es agregar primero pom.xml al directorio de trabajo, usar el comando Maven para descargar el paquete JAR requerido por la aplicación y luego agregar el archivo fuente de la aplicación para la compilación. De esta manera, mientras el pom.xml no se actualice, el paquete de dependencia del jar no se volverá a descargar, lo que puede acelerar enormemente la velocidad de construcción de la imagen.
Podemos compilar la aplicación a través del siguiente comando
Docker Build -t Builder -IMG -f Dockerfile.Build.
Compilación de aplicaciones separadas y construcción de imágenes de Docker
Para idiomas compilados estáticos, generalmente necesitamos separar el proceso de compilación de aplicaciones del proceso de construcción del espejo. Hay dos consideraciones principales:
Podemos copiar los resultados de la compilación de la aplicación de la imagen Docker, de la siguiente manera
Docker Build -T Builder -IMG -f Dockerfile.Build .Docker Crear - -Name Builder Builder -Imgdocker CP Builder:/usr/src/app/target ./target
En este momento, el resultado de la construcción de Maven se copia al subdirectorio "objetivo" del directorio actual.
Después de eso, podemos usar otro DockerFile para crear imágenes de aplicaciones. No entraré en detalles si tengo espacio limitado.
Resumir
Este artículo utiliza Maven como ejemplo para introducir algunas técnicas comunes para Docker en la construcción de aplicaciones.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.