九、微服务学习笔记-docker compose 部署Nexus

一、什么是Nexus

Nexus是一个强大的Maven仓库管理器,极大简化了内部仓库的维护和外部仓库的访问。

1、对底层代码进行了大规模重构,提升性能,增加可扩展性以及改善用户体验。

2、升级界面,极大的简化了用户界面的操作和管理。

3、提供新的安装包,让部署更加简单

4、增加对Docker、NeGet、npm、Bower的支持。

5、提供新的管理接口,以及增强对自动任务的管理

二、部署Nexus

官方教程文档:https://hub.docker.com/r/sonatype/nexus3

部署命令如下:

#拉取镜像
docker pull sonatype/nexus3

#cd local目录下,并创建docker,在docker目录下创建nexus
cd /usr/local/
mkdir docker
mkdir nexus

#编辑docker-compose.yml
vi docker-compose.yml
#启动
docker-compose up -d

docker-compose.yml配置文件内容如下:

version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8082:8081
    volumes:
      - nexus-data:/nexus-data
volumes:
  nexus-data:

三、访问Nexus

四、Nexus配置和使用

官方文档:https://help.sonatype.com/repomanager3/formats/maven-repositories#MavenRepositories-ConfiguringGradle

mvn仓库配置:

<distributionManagement>
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Releases Repository</name>
            <url>http://192.168.121.131:8082/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.121.131:8082/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>http://192.168.121.131:8082/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Nexus Plugin Repository</name>
            <url>http://192.168.121.131:8082/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

maven setting认证配置:(只需要配置账号密码,请求地址是在pom里面)

<server>
      <id>nexus-releases</id>
      <username>admin</username>
      <password>admin123</password>
</server>
<server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
 </server>

 上传命令:

mvn deploy -Dmaven.test.skip=true

五、遇到问题

1、提示没有文件夹权限

2、账号密码错误,不是默认admin123

(1)通过docker ps命令获取容器id,

(2)docker exec -it 容器ID  /bin/bash 命令进入容器

(3)vi /nexus-data/admin.password 查看密码(就是密码不是加密串)

3、打包上传mvn时,出现异常

 分析问题:

1、防火墙导致访问失败

通过telnet,可以排除

2、认证出现异常

查看账号的ID是否跟仓库的ID一致

解决方式:maven setting中的账号ID和pom文件中的ID不一致导致的,修改后成功运行

MAVEN-central  中央仓库(没有会去官网仓库获取包)
MAVEN-Public  公共仓库 组(包含其他仓库)

MAVEN-RELEASES  发行

MAVEN-SNAPSHOTS  快照(开发版)

面向修改关闭,面向扩展开发

语义化版本 V1.0.0(架构、功能、bug数)外部版本号

原文地址:https://www.cnblogs.com/myLeisureTime/p/13494565.html