docker准备工作
# 卸载旧版本
yum remove -y docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 设置 yum repository
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装并启动 docker
yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
systemctl enable docker
systemctl start docker
**
一、使用docker搭建nexus3私服
**
下载镜像
docker pull sonatype/nexus3
创建文件并授权 --为私服仓库存储做映射用
mkdir -p /app/nexus-data | chmod -R 777 /app/nexus-data
运行容器。占用端口,做数据储存映射
docker run --restart=unless-stopped -d -p 5000-5010:5000-5010 -p 8081:8081 -v /app/nexus-data:/nexus-data --name nexus sonatype/nexus3
1、打开浏览器,访问 http:// host addres:8081/
2、管理员登录密码在 /usr/local/docker/nexus/nexus-data 中admin开头的文件中,将其拷贝输入即可。
3、登录之后会要求修改密码,按要求修改即可。
二、项目发布到nexus的仓库
1、首先修改maven的setting.xml文件,添加用户信息,以便jar包上传私服时进行身份认证,修改内容如下:
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>xxxxxx</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>xxxxx</password>
</server>
#####################################
</servers>id : 为nexus的仓库名称,
username : nexus用户名
password : nexus密码
------------------------------------------
当然也可以采取docker 命令连接的方式
连接仓库前需要进行配置 vim /etc/docker/daemon.json
{
"insecure-registries": ["ip:启动nexus3端口" ]
}
在执行以下命令(上面ip和端口根据自己来)
systemctl daemon-reload
systemctl restart docker
docker login -u admin -p 输入自己的密码 ip地址:端口
#注意这里的端口是配置仓库时选择的端口号
对镜像做便签然后上传(下面为案例,ip和端口需要自己的)
docker tag nginx:latest 172.16.77.71:8082/nginx:0.1
docker push 172.16.77.71:8082/nginx:0.1
然后就可以pull了
docker pull 172.16.77.71:8082/nginx:0.1
2.讲解对nexus3界面的操作
登录后点击设置界面 选择Repositories,点击Create repository,如图所示
选择仓库类型 这里选择hosted类型 如图
配置仓库
该仓库指定一个唯一的名称、HTTP的端口、允许交互的API等
3.、创建maven项目,修改pom.xml
增加发布管理节点
<distributionManagement>
<snapshotRepository>
<id>maven-snapshots</id>
<name>maven-snapshots-repository</name>
<url>http://192.168.172.141:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>maven-releases</id>
<name>maven-releases-repository</name>
<url>http://192.168.172.141:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
-------------------------------------------------------
snapshotRepository : 快照仓库
repository : 发行仓库
id : 与上面的server的id一致
name : 随便
url : 仓库地址,从nexus中可以找到
4、项目打包发布
maven会根据中是否含有SANPSHOT来选择是发布到快照仓库,还是发行版仓库
项目打包
mvn clean package -Dmaven.test.skip=true
项目发布
mvn deploy
5有时项目开发时,一些maven依赖下载不下来,一直报错。这时,可以手动下载jar包,将其安装到nexus私服,再从nexus解决依赖问题。下面以安装kaptcha为例
mvn deploy:deploy-file -DgroupId=com.google.code.kaptcha -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar -Dfile=D:\kaptcha-2.3.2.jar -Durl=http://192.168.172.141:8081/repository/third/ -DrepositoryId=third
----------------------------------------------------
DgroupId : jar包的groupId
Dversion : jar包的版本
Dfile : jar包所在位置
Durl : 仓库地址
DrepositoryId : 仓库名
这里新建了名为third的第三方仓库,注意要在setting.xml增加一个server节点,
配置用户名和密码。同时要将third仓库加到maven-public组中,
因为第十步要依赖的是maven-public组。
将 third加入maven-pulic组后,只要依赖maven-public,
便可取到third中的jar包。
三、从nexus下载依赖
1.在pom.xml中增加如下仓库配置:
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://192.168.172.141:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://192.168.172.141:8081/repository/maven-public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
--------------------------------------------
可以看到 上面的url节点填写的都是maven-public组的url,
而maven-releases,maven-snapshots,third都包含在maven-public中,
所以能取到三个仓库的内容。