docker部署nexus
使用docker的方式部署,在创建容器之前先创建好存放nexus的数据目录
mkdir -p /export/server/nexus3-server/data
chown -R 200 /export/server/nexus3-server/data
启动容器
docker run -d -p 8082:8081 --restart always --name nexus-server -v /export/server/nexus3-server/data:/nexus-data sonatype/nexus3
启动过程比较慢,耐心等待几分钟,可以通过查看日志来看启动过程
docker logs -f nexus-server
另外nexus私服在启动时可以指定jvm参数,例如:
-e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g
访问测试
ip:8082
用户名:admin 密码:admin123
直接备份nexus的整个数据目录,要迁移的数据为老的私服数据,目录在 $HOME/sonatype-work/nexus3目录下
# tree -L 1
.
├── backup
├── blobs
├── cache
├── db
├── elasticsearch
├── etc
├── generated-bundles
├── health-check
├── instances
├── javaprefs
├── kar
├── keystores
├── lock
├── log
├── orient
├── port
├── restore-from-backup
├── tmp
└── upgrades
把这些目录进行打包,可以排除cache(如果把此目录打包进去,在迁移结束,启动之前要将cache目录删除掉,否则会启动失败)和log目录打包
tar zcvf nexus_data.tgz --exclude=cache --exclude=log
开始迁移前需要将nexus服务停掉
docker contaienr stop nexus-server
然后解压,重启容器即可,完成后,便可进行访问测试
以上是maven的私服仓库搭建和数据迁移,下面是maven的settings.xml文件参考
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="https//maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="https//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https//maven.apache.org/SETTINGS/1.0.0 https//maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/data/maven/repository/</localRepository>
<servers>
<server>
<id>maven-releases</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>maven-public</id>
<username>jenkins</username>
<password>密码</password>
</server>
// 这里的id cdvcloud 是我们在nexus上单独配置的一个hosted类型的私有仓库,用来存放自有的一些依赖包等
// 这里的id 也要和仓库名对应起来
<server>
<id>cdvcloud</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>maven-snapshots</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>docker-hub</id>
<username>admin</username>
<password>Harbor12345</password>
<configuration>
<email>邮箱</email>
</configuration>
</server>
</servers>
//先找本地缓存,本地没有,再找本地私服,本地私服没有,再找网络上的阿里仓
<mirrors>
<mirror>
<id>maven-local</id>
<name>maven-local</name>
<mirrorOf>maven-local</mirrorOf>
<url>/data/maven/repository/</url>
</mirror>
<mirror>
<id>maven-public</id>
<name>maven-public</name>
<mirrorOf>maven-public</mirrorOf>
<url>http://私服域名/repository/maven-public/</url>
</mirror>
<mirror>
<id>aliyun-public</id>
<name>aliyun-public</name>
<mirrorOf>center</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>nexus</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>cdvcloud</id>
<url>http://私服域名/repository/cdvcloud/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-releases</id>
<url>http://私服域名/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>alimaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-snapshots</id>
<url>http://私服域名/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:postgresql://192.168.0.130:8084/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>Sonar@123</sonar.jdbc.password>
<sonar.host.url>http://sonar域名</sonar.host.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
<activeProfile>sonar</activeProfile>
</activeProfiles>
</settings>
以上为公司在使用的配置文件,仅供参考。
创建两个仓库,一个专门存放私有包的,另一个用来做代理阿里仓库的
配置完上面两个仓库后,需要最后在public中引用下
全部仓库可读
开发者的权限
上传jar包的权限
比如生产环境和测试环境都需要一个私服,但是在平时的开发过程中,测试环境的私服里的私有包经常会变化,如果要定期对测试环境的私服做迁移,工作量则会有点大,所以通过代理的方式,线上私服代理测试私服。
线上nexus配置参考
中央仓库代理的便是测试私服的私有包仓库
还有一个是代理的阿里公仓
下面是maven的参考
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="https//maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="https//www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https//maven.apache.org/SETTINGS/1.0.0 https//maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/data/maven/repository/</localRepository>
<servers>
<server>
<id>maven-releases</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>maven-public</id>
<username>jenkins</username>
<password>密码</password>
</server>
// 这里的id cdvcloud 是我们在nexus上单独配置的一个hosted类型的私有仓库,用来存放自有的一些依赖包等
// 这里的id 也要和仓库名对应起来
<server>
<id>cdvcloud</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>maven-snapshots</id>
<username>jenkins</username>
<password>密码</password>
</server>
<server>
<id>docker-hub</id>
<username>admin</username>
<password>Harbor12345</password>
<configuration>
<email>邮箱</email>
</configuration>
</server>
</servers>
//先找本地缓存,本地没有,再找本地私服,本地私服没有,再找网络上的阿里仓
<mirrors>
<mirror>
<id>maven-local</id>
<name>maven-local</name>
<mirrorOf>maven-local</mirrorOf>
<url>/data/maven/repository/</url>
</mirror>
<mirror>
<id>maven-public</id>
<name>maven-public</name>
<mirrorOf>maven-public</mirrorOf>
<url>http://私服域名/repository/maven-public/</url>
</mirror>
<mirror>
<id>aliyun-public</id>
<name>aliyun-public</name>
<mirrorOf>center</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>nexus</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>cdvcloud</id>
<url>http://私服域名/repository/cdvcloud/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-releases</id>
<url>http://私服域名/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>alimaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>maven-snapshots</id>
<url>http://私服域名/repository/maven-snapshots/</url>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>jdbc:postgresql://192.168.0.130:8084/sonar</sonar.jdbc.url>
<sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>Sonar@123</sonar.jdbc.password>
<sonar.host.url>http://sonar域名</sonar.host.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
<activeProfile>sonar</activeProfile>
</activeProfiles>
</settings>