Docker搭建Nexus私服—Nexus私服的搭建

Maven私服的搭建

一、什么是nexus?

  • Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问
  • Nexus不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。对于Maven来说,仓库只有两种:本地仓库和远程仓库。
  • Nexus只是Maven仓库之一
  • Maven工作流程

img

二、 为什么要使用nexus?

  • 我们可以把自己制作的jar包存放至nexus 供其他小伙伴使用
  • 他提供了强大的仓库管理功能
  • 加速Maven构建 构建项目时Maven会不停的请求外部仓库,非常的耗时。利用私服:Maven只检查局域网中的数据以提高构建速度

三、Docker中搭建Nexus

环境要求

  • docker环境

  • docker-compose环境

1. 找一个合适的位置存放nexus

root@yufire:/usr/local/docker# mkdir nexus
root@yufire:/usr/local/docker/nexus# ls
root@yufire:/usr/local/docker/nexus# 

2. 编写docker-compose文件

vi docker-compose.yml

docker-compose.yml

version: '3.5'
services:
  nexus:
    restart: always 
    image: sonatype/nexus3:3.23.0 # nexus版本
    container_name: nexus # 容器名称
    environment:  # 环境变量
      INSTALL4J_ADD_VM_PARAMS: -XX:ActiveProcessorCount=4
    ports: # 映射的端口  
      - 80:8081
    volumes:  # 数据卷
      - ./data:/nexus-data
  • 设置的环境变量意思为机器的 CPU核心数 如果部署Nexus的机器CPU核心数不足4核的话 Nexus会有一个警告

创建数据文件夹

mkdir data  # data要与 volumes里的data对应
chmod 777 data # 赋予权限 否则nexus启动可能报错

运行docker-compose

docker-compose up -d  # -d 为守护态运行(后台运行)
Creating network "nexus_default" with the default driver # 创建了一个名称为 nexus_default的网络
Pulling nexus (sonatype/nexus3:3.23.0)... # 拉取 nexus镜像
3.23.0: Pulling from sonatype/nexus3
78afc5364ad2: Pull complete
58e1deb9693d: Pull complete
138a5c9bc330: Pull complete
a9af31a2240a: Pull complete
Digest: sha256:cb51454c5951f1330bfc6a8315b6a2b332f6292dbecee67b3e5a6d9ea4945ee9
Status: Downloaded newer image for sonatype/nexus3:3.23.0
Creating nexus ... done # 创建容器完成
  • 等待docker的镜像下载完毕

以上成功了之后 查看docker运行状况

docker ps 
CONTAINER ID        IMAGE                    COMMAND                  CREATED              STATUS              PORTS                  NAMES
68609501ea22        sonatype/nexus3:3.23.0   "sh -c ${SONATYPE_DI…"   About a minute ago   Up About a minute   0.0.0.0:80->8081/tcp   nexus

确定启动成功了之后 访问nexus的地址

四、Windows中搭建Nexus

  • 待更新

五、配置 Nexus私服

http://ip

img

Docker查看Nexus初始密码

打开 data文件夹中的 admin.password文件查看密码

root@yufire:/usr/local/docker/nexus# pwd
/usr/local/docker/nexus 
root@yufire:/usr/local/docker/nexus# ls
data  docker-compose.yml
root@yufire:/usr/local/docker/nexus# cd data/  # 进入data目录
root@yufire:/usr/local/docker/nexus/data# ls  查看data中的文件
admin.password  blobs  cache  db  elasticsearch  etc  generated-bundles  instances  karaf.pid  keystores  lock  log  orient  port  restore-from-backup  tmp
root@yufire:/usr/local/docker/nexus/data# cat admin.password   查看 初始密码
d85f05a9-861f-4b60-b7ee-5e7d9f83e9f6 # 复制初始密码 登陆

Windows查看Nexus初始密码

第一次登陆成功之后

  1. 点击 Next
  2. 重新设置密码

img

  1. 配置匿名访问

img

匿名访问

  • 即访问该仓库时必须设置密码 否则禁止访问
  • 配置密码可在 Maven配置文件中进行配置

配置仓库

设置 -> Repositories -> Create repository

img

找到 maven2(proxy)

img

填写仓库信息

img

  1. 设置仓库名称
  2. 设置仓库路径
  3. 其他默认就好
  4. 下拉找到 Create repository 按钮 点击即可完成创建

创建完成回到仓库列表

img

在 maven-public中配置aliyun仓库

img

img

  • 直接拖动 aliyun-nexus到右边第一个的位置

img

  • 注意先后顺序!

点击 Save按钮保存即可

六、在项目中使用Nexus

**找到Maven配置文件的 servers 节点 并配置 认证信息 **

<servers>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>123123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>123123</password>
    </server>
</servers>

Snapshots 与 Releases 的区别

  • nexus-releases: 用于发布 Release 版本
  • nexus-snapshots: 用于发布 Snapshot 版本(快照版)

项目中配置

打开 pom.xml 添加以下信息

<distributionManagement>  
  <repository>  
    <id>releases</id>  
    <name>Nexus Release Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-releases/</url>  
  </repository>  
  <snapshotRepository>  
    <id>snapshots</id>  
    <name>Nexus Snapshot Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>  
  </snapshotRepository>  
</distributionManagement> 
  • 这边的id 要与 Maven 配置文件中Nexus认证信息的 id 一致
  • 项目版本号中有 SNAPSHOT 标识的,会发布到 Nexus Snapshots Repository, 否则发布到 Nexus Release Repository,并根据 ID 去匹配授权账号。

发布项目到Nexus私服

maven deploy

七、附

1. 上传第三方 JAR 包

Nexus 3.0 不支持页面上传,可使用 maven 命令:

# 如第三方JAR包:aliyun-sdk-oss-2.2.3.jar
mvn deploy:deploy-file 
  -DgroupId=com.aliyun.oss 
  -DartifactId=aliyun-sdk-oss 
  -Dversion=2.2.3 
  -Dpackaging=jar 
  -Dfile=D:\aliyun-sdk-oss-2.2.3.jar 
  -Durl=http://127.0.0.1:8081/repository/maven-3rd/ 
  -DrepositoryId=nexus-releases
  • -DrepositoryId=nexus-releases 对应的是 settings.xml 中 Servers 配置的 ID 名称。(授权)

2. Maven配置

传送门 Maven配置

完结

  • 部分转载于 撸帝 的文章

作者:yufire © [email protected]

猜你喜欢

转载自blog.csdn.net/weixin_43420255/article/details/106414133