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/.