使用docker(Nexus-3.3-OOS)自建Maven私服

摘要:本文主要是记录如何使用 Nexus 3.3 官方的 Docker 镜像搭建 Maven 私服。基于 Dockder 搭建大大简化了整个流程。

众所周知,Docker 可以大大简化服务器的部署,所以 sonatype 公司也发布了 nexus v3版本的官方docker。有了这个 Dockerfile 我们就可以轻松的在本地或者自己的服务器搭建一个 Nexus 服务器了。

本文会有若干 docker 的命令,并对其进行解释,如果希望灵活运用,还需要自行学习 docker

获取 Dockerfile

只需要把官方的 git repository clone 下来即可

1
git clone https://github.com/sonatype/docker-nexus3.git

当然如果希望自行定制,可以 fork 一份再克隆自己的仓库。

编译 Dockerfile

进入该 repository 然后进行编译

1
2
3
4
# enter the folder
cd docker-nexus3
# compile the dockerfile
docker build --rm=true --tag=sonatype/nexus3 .

build 是 docker 的编译命令。其中 --rm=true 表示成功编译后删除中间的容器(Remove intermediate containers after a successful build)。--tag=xxx设置 docker 的 images 管理的标签,可以自行制定任意可辨识的名字。

如果 build 成功,输入 docker images 将会看到刚才编译出来的 image,名字为 sonatype/nexus3

创建数据存储文件夹或者 Data Volume

官方有两种方式:

  1. 使用 docker 的 data volume (推荐)
  2. 使用本地目录作为 container 的 volume

通过搜索了解到两种方法的区别在于第二种方法无法在 Dockerfile 中体现,也即是说如果使用第二种方法,是无法将该 container 做成 portable(也就是便携的,可以直接移植的)。所以我们最好使用第一种,当然 data volume 还有很多特性,不在本文讨论范围内。

使用 data volume

1
docker volume create --name nexus-data

使用本地目录

1
mkdir /some/dir/nexus-data && chown -R 200 /some/dir/nexus-data

其中 chown -R 200 表示更改该文件夹的拥有者为 UID 为 200 的用户,这里应该是为了尽量不要在本机被当前用户或其他用户修改该文件夹,该文件夹只允许我们后面运行的 docker container 来使用。(个人认为,首先通过命令id 200 检查一下该 id 是否有用户,如果没有就用该 id,如果有则换一个新的 id。)

运行 docker 容器

命令中8081:8081前一个 port 可以自行指定一个本机没有被占用的端口,后一个端口定义域 Dockerfile 中,不能更改。--name 也可以自行修改容器的名字。参数-d表示是以 detached 方式运行,也就是后台运行,执行完该命令后,用户只会看到一个容器的标识 id,然后就回到原来的 bash,但该容器已经在后台运行了

使用 data volume

1
docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

使用本地目录

1
docker run -d -p 8081:8081 --name nexus -v /some/dir/nexus-data:/nexus-data sonatype/nexus3

检测 nexus 服务器

根据我个人的经验,该服务器会有一个启动的时间,所以大家不要太着急打开浏览器访问服务器,稍微等待片刻,大概1-2分钟,当然时间长短是会根据设备的性能而变的。

除了用浏览器直接访问 localhost:8081 来检查服务器外,还可以使用如下指令来快速检测:

1
curl -u admin:admin123 http://localhost:8081/service/metrics/ping

执行完上面命令如果返回了 pong,那么证明服务启动成功了!(为什么是 pong?ping-pong 形象生动的表示服务器正确的给予了回复。)

这里admin:admin123 是 nexus oos 服务器初始默认的用户名和密码。

总结

至此一个完整的 nexus 3 的服务器在本地搭建好了,是不是很简单,而且不仅简单还很好移植,一旦哪天你想把该服务器放到其他 vps 主机,那么很简单,你只需要将 data volume 或者你本地建立的存储文件夹迁移,在目标主机上重新运行一下上面的步骤就行了。