Publicado 2021-10-04.
Palabras clave: maven
Para configurar un mirror local se utilizará nexus repository oss, más específicamente la imagen de contenedores que se encuentra en dockerhub: https://hub.docker.com/r/sonatype/nexus3/.
Para ejecutar la imagen se realizarán los siguientes pasos:
Agregar entrada en /etc/hosts
para agregar nombre de host a usar y
asociarla a la IP del equipo (no localhost):
Obtener ip físico del equipo:
$ ip -o -4 a | grep -o -P '\sinet\s\K[^/]*' | grep -v 127.0.0.1
192.168.1.106
En este caso se obtuvo solo una IP. En caso de que se obtenga más de una hay que elegir cual utilizar.
Agregar la ip a /etc/hosts
:
$ grep -q mvn-mirror.example.com /etc/hosts \
|| echo '192.168.1.106 mvn-mirror.example.com' | sudo tee -a /etc/hosts
Ejecutar la imagen de contenedores sonatype/nexus3
de dockerhub. Ya que es
deseable que se mantenga el caché de artefactos entre ejecuciones en lugar
de tener que descargar los artefactos cada vez es que se ejecutará la imagen
utilizando un volumen creado previamente como se indica en la página de la
imagen:
$ podman volume create nexus-data
$ podman run -d -p 192.168.1.106:8081:8081 -v nexus-data:/nexus-data \
--name nexus docker.io/sonatype/nexus3:3.34.1
Nota: tomar en cuenta que según la documentación de la imagen, el contenedor demora unos dos~tres minutos en estar listo y lo mismo al detener la imagen.
Obtener las credenciales de la imagen creada. De la documentación se tiene
que el usuario es admin
y el password se obtiene de la imagen:
$ podman exec nexus cat /nexus-data/admin.password
4b0efdbf-d4c4-4b45-a479-8cadf0b06690
Realizar el setup de la aplicación. Para ello hay que loguearse abriendo la página de nexus: http://mvn-mirror.example.com:8081.
Se elige como nueva password password
y se habilitan los accesos anonimos.
Por defecto está configurado el repositorio maven-central
bajo la url
http://mvn-mirror.example.com:8081/repository/maven-central/ que es un proxy a
https://repo1.maven.org/maven2/.