摘要:本文主要是记录如何使用 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 | # enter the folder |
build
是 docker 的编译命令。其中 --rm=true
表示成功编译后删除中间的容器(Remove intermediate containers after a successful build)。--tag=xxx
设置 docker 的 images 管理的标签,可以自行制定任意可辨识的名字。
如果 build
成功,输入 docker images
将会看到刚才编译出来的 image,名字为 sonatype/nexus3
创建数据存储文件夹或者 Data Volume
官方有两种方式:
- 使用 docker 的 data volume (推荐)
- 使用本地目录作为 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
或者你本地建立的存储文件夹迁移,在目标主机上重新运行一下上面的步骤就行了。