前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >maven私服搭建及数据迁移

maven私服搭建及数据迁移

作者头像
dogfei
发布2020-07-31 14:11:53
3.2K0
发布2020-07-31 14:11:53
举报
文章被收录于专栏:devops探索
docker部署nexus

使用docker的方式部署,在创建容器之前先创建好存放nexus的数据目录

代码语言:javascript
复制
mkdir -p /export/server/nexus3-server/data
chown -R 200 /export/server/nexus3-server/data

启动容器

代码语言:javascript
复制
docker run -d -p 8082:8081 --restart always --name nexus-server -v /export/server/nexus3-server/data:/nexus-data sonatype/nexus3

启动过程比较慢,耐心等待几分钟,可以通过查看日志来看启动过程

代码语言:javascript
复制
docker logs -f nexus-server

另外nexus私服在启动时可以指定jvm参数,例如:

代码语言:javascript
复制
-e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g -XX:MaxDirectMemorySize=3g

访问测试

代码语言:javascript
复制
ip:8082

用户名:admin 密码:admin123

迁移

直接备份nexus的整个数据目录,要迁移的数据为老的私服数据,目录在 $HOME/sonatype-work/nexus3目录下

代码语言:javascript
复制
# 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目录打包

代码语言:javascript
复制
tar zcvf nexus_data.tgz --exclude=cache --exclude=log

开始迁移前需要将nexus服务停掉

代码语言:javascript
复制
docker contaienr stop nexus-server

然后解压,重启容器即可,完成后,便可进行访问测试

以上是maven的私服仓库搭建和数据迁移,下面是maven的settings.xml文件参考

代码语言:javascript
复制
<?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>

以上为公司在使用的配置文件,仅供参考。

nexus配置参考

创建两个仓库,一个专门存放私有包的,另一个用来做代理阿里仓库的

配置完上面两个仓库后,需要最后在public中引用下

角色授权

全部仓库可读

开发者的权限

上传jar包的权限

一个私服代理另一个私服

比如生产环境和测试环境都需要一个私服,但是在平时的开发过程中,测试环境的私服里的私有包经常会变化,如果要定期对测试环境的私服做迁移,工作量则会有点大,所以通过代理的方式,线上私服代理测试私服。

线上nexus配置参考

中央仓库代理的便是测试私服的私有包仓库

还有一个是代理的阿里公仓

下面是maven的参考

代码语言:javascript
复制
<?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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • docker部署nexus
  • 迁移
  • nexus配置参考
  • 角色授权
  • 一个私服代理另一个私服
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档