为何用到Maven私服?
在实际开发中,项目中可能会用到第三方的jar、内部通讯的服务接口都会打入到公司的私服中。
我们从项目实际开发来看:
- 一些无法从外部仓库下载的构件,例如内部的项目还能部署到私服上,以便供其他依赖项目使用。
- 为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的符合。
方法1:下载一个nexus3的镜像
docker pull sonatype/nexus3
- 将容器内部/var/nexus-data挂载到主机 /home/maven/data目录
docker run -d -p 8881:8081 --name nexus -v /home/maven/data:/var/nexus-data --restart=always sonatype/nexus3
方法2:docker-compose启动
version: '3'
services:
#nexus容器
nexus:
#使用的镜像
image: sonatype/nexus3
container_name: nexus
restart: always
#容器的映射端口
ports:
- 8081:8081
#定义挂载点
volumes:
- /home/maven/data:/var/nexus-data
运行命令
docker-compose up -d
默认登陆账号 admin admin123
注意,这个时候你可能会遇到如下这个错误: Incorrect username or password, or no permission to use the application.
maven私服登录的时候默认是不能使用明文密码,要使用密文密码,一般在你创建容器的目录下,比如 root/nexus-data/admin.password ,注意,需要进入容器中找,见下方指令与图
[root@VM_0_5_centos maven]# docker exec -it nexus /bin/bash
bash-4.4$ cd /nexus-data/
bash-4.4$ cat admin.password
54948f3b-c748-44ec-8782-09ad2c650e8bbash-4.4$
去掉后面的 bash-4.2$,54948f3b-c748-44ec-8782-09ad2c650e8b 即为密码。