使用Docker在Linux系统搭建Nexus
参考文章,并对有问题部分进行了更正。
1.安装
1.进入自己指定存放目录
cd /usr/local/src
2.创建个文件夹
mkdir nexus
3.赋予权限,不然启动会报错,无操作权限
chmod 777 nexus
4.启动镜像
docker run -d -p 8081:8081 --name nexus -v /usr/local/src/nexus:/nexus --restart=always sonatype/nexus3
通过docker logs -f nexus查看启动日志,当出现Started Sonatype Nexus OSS说明启动成功
5.访问
这时通过http://ip:8081即可访问
访问不通的话,多半是没开端口,操作防火墙开下端口。
1.查看防火墙
systemctl status firewalld.service
2.开放端口
firewall-cmd --zone=public --add-port=8081/udp --permanen
3.查看开放的端口
firewall-cmd --zone=public --list-ports
查不到的话,重启下一般就好了
service firewalld restart
6.登录
点击右上角Sign in进行登录,账号为admin,密码需要去镜像中查看,如下:
# 进入镜像
docker exec -it nexus /bin/bash
# 查看密码,路径在登录框会提示,然后复制即可,登录成功后会让你修改密码
cat /nexus-data/admin.password
7.注意事项
- 防火墙端口要开
- 感觉挺吃内存,开始给了2G不够用,后来追加到了4G。如果什么操作都对,尝试调整下内存。
- nexus基于java,需要安装JDK。
- Linux、docker、jdk安装可在之前文章参考
2.使用
1.初始化设置
登陆后修改原始密码,关闭匿名访问
2.仓库
仓库类型 | 说明 |
---|---|
proxy | 某个远程仓库的代理 |
group | 存放:通过 Nexus 获取的第三方 jar 包 |
hosted | 存放:本团队其他开发人员部署到 Nexus 的 jar 包 |
仓库名称 | 说明 |
---|---|
maven-central | Nexus 对 Maven 中央仓库的代理 |
maven-public | Nexus 默认创建,供开发人员下载使用的组仓库 |
maven-releasse | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 releasse 版本 |
maven-snapshots | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 snapshots 版本 |
2.5.修改仓库配置
修改 maven-central 仓库代理的远程库地址
3.maven配置
1.配置mirror
<mirror>
<id>nexus-epo</id>
<mirrorOf>central</mirrorOf>
<name>Nexus epo</name>
<url>http://192.168.1.188:8081/repository/maven-public/</url>
</mirror>
2.配置server
如果开启了匿名访问,server标签可以不配置
<server>
<id>nexus-epo</id>
<username>admin</username>
<password>xxxxxx</password>
</server>
3.执行下载
执行前,远程仓库及本地仓库(新建的文件夹)都是空的
找一个maven项目,执行编译命令后,远程仓库及本地仓库已经有了jar包
新版本的idea在修改了settings文件的本地仓库后会自动更新,老版本貌似不行。
4.上传本地jar包(Maven项目)
1.pom配置
<distributionManagement>
<snapshotRepository>
<id>nexus-epo</id>
<name>Nexus Snapshot</name>
<url>http://192.168.1.188:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
id要与settings中配置的一致
2.部署
部署前,可以考到maven-snapshot中没有任何jar包
执行
mvn clean deploy
执行后,发现jar包已经上传
5.使用别人上传到私服的jar包
默认访问的 Nexus 仓库:maven-public,需要单独配置下仓库
1.配置pom
<repositories>
<repository>
<id>nexus-epo</id>
<name>nexus-epo</name>
<url>http://192.168.1.188:8081/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
同时删除本地仓库中安装的jar
在pom中引入上传到私服中的jar包的坐标
<dependencies>
<dependency>
<groupId>com.epo</groupId>
<artifactId>ccore-sample</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
导包后发现,坐标正常颜色,本地库下载了jar包,且供能可执行。
3.非maven项目上传maven私服
1.包装成maven工程
- idea中右键项目,创建pom.xml,根据项目实际情况填入一下内容
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.epo</groupId>
<artifactId>sample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sample</name>
<description>样例</description>
</project>
-
右键pom.xml,Add As Maven Project
-
本项目依赖jar包,写到pom文件
2.配置setting.xml文件
<servers>
<!-- 20220606 nexus test-->
<!-- 发布私服账号密码验证 -->
<server>
<id>sample-releases</id><!--随便写,但要对应项目pom文件中一致-->
<username>admin</username>
<password>admin</password>
</server>
<server>
<id>sample-snapshots</id><!--随便写,但要对应项目pom文件中一致-->
<username>admin</username>
<password>admin</password>
</server>
</servers>
...
<!-- 自己配置的相关私服地址 -->
<mirrors>
<mirror>
<id>epo-sample</id>
<name>epo-sample</name>
<url>http://192.168.0.110:8081/repository/epo-sample/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>