1.拉取镜像
docker pull sonatype/nexus3
2.创建挂载目录
mkdir /usr/local/src/nexus-data
chmod 777 /usr/local/src/nexus-data
3.运行容器
docker run -d --name=nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 -v /usr/local/src/nexus-data:/nexus-data sonatype/nexus3

如果服务器配置较低,例如1核2G以下的,可以再添加-e INSTALL4J_ADD_VM_PARAMS="-Xms256M -XX:MaxDirectMemorySize=2048M"这个命令,防止容器启动时内存不足导致的启动失败。

  • 8081: nexus3 服务端口
  • 8082: host 镜像仓库的服务端口
  • 8083: group 镜像仓库的服务端口
4.登录私服
1.在浏览器中输入:服务器ip:8081
2.进入页面后点击右上角的Sign in进行账号登录,
首次登录会提示密码位于/nexus-data/admin.password中,进入服务器找到这个文件,
获取里面的密码进行登录,登录后按照提示重新设置新密码就好。

nexus3 docker仓库无法缓存 docker安装nexus3_maven

5.创建仓库

Nexus3 仓库有三大种类型:hosted、proxy、group。

  • hosted:宿主仓库,即本地仓库,该仓库存放本地项目产生的构建,无论是团队内部开发了通用组件库、公共 jar 等,都是发布到这里面。
  • proxy:代理仓库,用来代理远程仓库,如代理 Maven 中央仓库等。
  • group:仓库组,可以聚合上面两者。因为在开发过程中,某些包是远端的、某些包是内部私服中的,这样就对应了两个地址,使用仓库组将 hosted 和 group 聚合,暴露为一个地址。

一般maven项目需要创建四个仓库,默认会自动创建好,分别为:maven-central,maven-public,maven-releases,maven-snapshots,也可以在系统页面新建其他的仓库。

nexus3 docker仓库无法缓存 docker安装nexus3_nexus3 docker仓库无法缓存_02

  1. maven-central:类型为proxy,可以在这仓库里面配置远程仓库的地址,后续项目中使用的jar包会从这个配置的远程仓库中去下载。
  2. nexus3 docker仓库无法缓存 docker安装nexus3_服务器_03

  3. maven-public:类型为group,可以在这个仓库里面配置不同类型的仓库组合,后续项目中使用的jar包会从配置的各个类型仓库中去下载。默认将maven-central、maven-releases和maven-snapshot三个仓库组合在一起对外提供服务,简化了maven客户端在settings.xml或pom.xml中的配置。
  4. nexus3 docker仓库无法缓存 docker安装nexus3_服务器_04

  5. maven-releases:类型为hosted,又叫发布仓库,主要用于存储项目正式上线时构建的发布版本,需要在项目模块的pom文件中的<version>版本号</version>中不带有-SNAPSHOT的通过mvn deploy命令构建时会发布到该仓库中,例如:<version>1.0.0</version>。使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
  6. maven-snapshots:类型也为hosted,又叫快照仓库,主要用于存储开发测试过程中项目构建的不稳定的版本,需要在项目模块的pom文件中的<version>版本号</version>中带有-SNAPSHOT的通过mvn deploy命令构建时会发布到该仓库中,例如:<version>1.0.0-SNAPSHOT</version>。使用正式版本的模块,在不更改版本号的情况下,编译打包时,如果本地仓库已经存在该版本的模块则使用本地仓库的而不是主动去镜像服务器上下载。
6.设置 Realms

如果搭建 npm 私服,发布 JS 库时需要通过 npm login 等录,在发布的时候需要私服支持 npm bearer token 方式。进入 Realms 设置界面,将 npm Bearer Token Realm 选到右侧。如下图所示:

nexus3 docker仓库无法缓存 docker安装nexus3_nexus3 docker仓库无法缓存_05