Configuración de un repositorio Maven privado con Docker

Instalación de un repositorio privado

Este artículo explica cómo configurar rápidamente un repositorio Maven privado usando Docker.

Crea el archivo docker-compose.yaml con el siguiente contenido:

version: '2'

services:

  repo:
    image: sonatype/nexus3:3.72.0
    container_name: repo
    restart: always
    ports:
      - '8081:8081' 
    volumes:
      - '/data/opt/repo/data:/nexus-data'


Para evitar problemas de permisos en el directorio del host, es necesario ajustar los permisos del directorio /data/opt/repo/data (por ejemplo, ejecutar chmod -R 777 /data/opt/repo/data).

Ejecuta docker-compose up para iniciar el contenedor. Luego, accede al navegador mediante la dirección http://IP_de_la_máquina_huésped:8081. Haz clic en el botón 【Sign In】 en la parte superior derecha para ver la ventana de inicio de sesión:

El usuario predeterminado es admin y la contraseña se encuentra en el archivo /nexus-data/admin.password. Puedes revisarlo en el directorio montado /data/opt/repo/data.

$ ls -al /data/opt/repo/data/
total 80
drwxrwxrwx  14 root root  4096 Sep 13 09:36 .
drwxr-xr-x   3 root root  4096 Sep 13 09:34 ..
-rw-r--r--   1  200  200    36 Sep 13 09:36 admin.password  # este es el archivo con la contraseña por defecto
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 blobs
drwxr-xr-x 347  200  200 12288 Sep 13 09:35 cache
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 db
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 elasticsearch
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 etc
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 generated-bundles
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 instances
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 javaprefs
-rw-r--r--   1  200  200     1 Sep 13 09:35 karaf.pid
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 keystores
-rw-r--r--   1  200  200    14 Sep 13 09:35 lock
drwxr-xr-x   5  200  200  4096 Sep 22 15:39 log
-rw-r--r--   1  200  200     5 Sep 13 09:35 port
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 restore-from-backup
drwxr-xr-x   8  200  200  4096 Sep 13 09:36 tmp


Una vez que inicies sesión correctamente, Nexus requerirá cambiar la contraseña del usuario admin y configurar los permisos básicos. Después de esto, podrás acceder a la interfaz de administración del repositorio privado.

En la interfaz de configuración, hay algunos ajustes necesarios:

Configurar el repositorio central

Para mejorar el rendimiento, modifica la URL del repositorio central en la configuración del servidor para usar el proxy de Aliyun: http://maven.aliyun.com/repository/central.

Crear un repositorio tipo hosted

Un repositorio hosted se usa para almacenar componentes personalizados. Ve a Create repository, selecciona maven2(hosted), ingresa un nombre y establece Version policy como Release. Elige Allow redeploy en Deployment policy para permitir actualizaciones.

Repite el proceso para crear otro repositorio tipo snapshot.

Añadir roles

Nexus tiene roles predeterminados, pero normalmente se crea uno nuevo para los desarrolladores. Accede a Create Role, define el Role ID como developer y otorga solo permisos para usar el repositorio.

Añadir usuarios

Crea un usuario local con los permisos adecuados. Asigna el rol recién creado y guarda los cambios.

Configurar grupos de repositorios

Los grupos de repositorios permiten agrupar múltiples repositorios. Usa el grupo maven-public y agrega tus repositorios private-release y private-snapshot a la lista de miembros, colocándolos al principio para asegurar que se busquen primero.

Uso del repositorio privado

Después de configurar el repositorio, es hora de ajustar la configuración de Maven local.

Configuración de credenciales

Agrega las credenciales en el archivo settings.xml dentro de la etiqueta servers:

<servers>
  <!-- Autenticación para descargas -->
  <server>
    <id>test</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>
</servers>


Configuración de repositorios

En mirrors, establece el repositorio privado como el destino:

<mirrors>
  <!-- Usar el repositorio privado -->
  <mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>Repositorio Central</name>
      <url>http://192.168.13.29:8081/repository/maven-public/</url>
  </mirror>
  <!-- Comentar el repositorio de Aliyun -->
  <!-- 
  <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>
  -->
</mirrors>


Publicación de proyectos locales en el repositorio

Configuración de Maven

En settings.xml, configura las credenciales para subir archivos:

<servers>
  <!-- Autenticación para descargas -->
  <server>
    <id>test</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>

  <!-- Autenticación para publicación -->
  <server>
    <id>private-release</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>
  
  <!-- Autenticación para publicación -->
  <server>
    <id>private-snapshot</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>
</servers>


Agrega el siguiente bloque en profiles:

<profiles>
  <profile>
    <id>dev</id>
    <repositories>
      <repository>
        <id>private-release</id>
        <url>http://192.168.13.29:8081/repository/private-release/</url>
      </repository>
      <repository>
        <id>private-snapshot</id>
        <url>http://192.168.13.29:8081/repository/private-snapshot/</url>
      </repository>
    </repositories>
  </profile>
</profiles>


Configuración del proyecto

En el archivo pom.xml, incluye lo siguiente:

<!-- Especificar el nombre del repositorio -->
<distributionManagement>
  <repository>
    <id>private-release</id>
    <url>http://192.168.13.29:8081/repository/private-release/</url>
  </repository>
  <snapshotRepository>
    <id>private-snapshot</id>
    <url>http://192.168.13.29:8081/repository/private-snapshot/</url>
  </snapshotRepository>
</distributionManagement>

<build>
  <pluginManagement>
    <plugins>
      <!-- Plugin para publicar JAR -->
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.7</version>
      </plugin>
      <!-- Plugin para publicar código fuente -->
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <executions>
              <execution>
                  <phase>package</phase>
                  <goals>
                      <goal>jar</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
    </plugins>
  </pluginManagement>
</build>


Finalmente, en tu IDE, haz clic en el botón deploy para completar la publicación.

【Referencia】 Guía completa sobre la instalación y uso de un repositorio Maven privado Tutorial detallado para configurar un repositorio Maven privado

Etiquetas: Docker maven nexus3 repository configuration

Publicado el 9-1 15:43