
liumiaocn/nexus!这里写图片描述 Nexus作为私库管理最为流行的工具之一,用于包的管理和Docker镜像管理的私库管理场景中非常常用。Easypack利用最新版本的oss版Nexus作为基础镜像用于提供类似服务。本文将同时给出具体步骤结合Maven以实现使用Nexus进行包的管理。
#Why Nexus 3 这里整理了为什么使用Nexus 3的一些理由,在做选型的时候可以做一个简单参照。
| 项目 | 详细 |
|---|---|
| 为什么使用Nexus 3 | [***] |
#下载镜像
[root@liumiaocn ~]# docker pull liumiaocn/nexus Using default tag: latest latest: Pulling from liumiaocn/nexus Digest: sha256:b93f9a6bba2b35ada33c324cd06bd2c732fc1bed352df186af1a013e228af8d8 Status: Image is up to date for liumiaocn/nexus:latest [root@liumiaocn ~]#
#启动Nexus
[root@liumiaocn local]# mkdir -p /usr/local/nexus-data [root@liumiaocn local]# docker run -d -p 8081:8081 --name nexus liumiaocn/nexus 844a9378ba1f101bad3de8688e2e665ea4ea8b68cb9e4b2457557e189daf922a [root@liumiaocn local]#
#logon
| 项目 | 详细 |
|---|---|
| URL | [***] |
| 用户名称 | admin |
| 用户密码 | admin123 |
!这里写图片描述
登陆之后 !这里写图片描述
#创建Proxy私库 ##仓库类型 具体仓库类型主要分为hosted/proxy/group三种。具体含义如下:
| 项目 | 详细说明 |
|---|---|
| hosted | 本地存储,像官方仓库一样提供本地私库功能 |
| proxy | 提供代理其他仓库的类型 |
| group | 组类型,可以组合多个仓库为一个地址提供服务 |
##创建Maven仓库 使用Nexus官方镜像,我们会试图总结出最佳的实践方式,然后再此基础上不断地完善和进步。
| 项目 | 详细说明 |
|---|---|
| 实践1 | 根据项目情况,结合Maven特点将Snapshot和Release进行分离,分别创建snapshot和release的host类型仓库 |
| 实践2 | 活用group类型,提供统一的对外URL |
| 实践3 | 可以使用-v将本地卷挂载进去,或者直接使用Named volume或者Data container使得数据从nexus容器中分离,方便数据的管理和备份等 |
##创建Snapshot的仓库 在Maven的Pom文件中的version标签内定义的以-SNAPSHOT结尾的版本tag统一在如下snapshot仓库中进行管理。 ###创建blob store 在创建仓库之前,建议为每个仓库创建blob store。
| 项目 | 详细说明 |
|---|---|
| 实践4 | 为每个仓库创建一个blob store,这样其数据会在/nexus-data下分别管理起来 |
| !这里写图片描述 |
###创建之后 !这里写图片描述
选择Server administration and configuration ->左侧的Administration -> repository -> repositories !这里写图片描述
###创建仓库
| 项目 | 详细说明 |
|---|---|
| 类型 | maven2(hosted) |
| !这里写图片描述 |
###创建 以下项目以外,使用default设定。
| 项目 | 详细说明 |
|---|---|
| name | maven-snapshots |
| version policy | snapshot |
| deployment policy | allow redeploy |
| blob store | maven-snapshots |
| !这里写图片描述 | |
| 确认 | |
| !这里写图片描述 |
##创建release的仓库 在Maven的Pom文件中的version标签内定义的以-SNAPSHOT结尾以外的版本tag统一在如下release仓库中进行管理。创建release的仓库步骤以及所用到的信息如下:
| 项目 | 详细说明 |
|---|---|
| 类型 | maven2(hosted) |
| name | maven-releases |
| deployment policy | allow redeploy |
| blob store | maven-releases |
| !这里写图片描述 |
##创建proxy仓库 创建proxy仓库,default以外的值设定如下:
| 项目 | 详细说明 |
|---|---|
| 类型 | maven2(proxy) |
| name | maven-central |
| location of the remote repository being proxied | [***] |
| blob store | maven-central |
| Maximum component age | 1440 |
| !这里写图片描述 |
最后确认的时候才发现上图中的location of the remote repository being proxied选项写错了,无法下载到本地,所以建议URL方式的设定之前先手动确认一下是否正确 !这里写图片描述
##创建group仓库 为提供统一的URL进行管理,按照如下方式创建group仓库:
| 项目 | 详细说明 |
|---|---|
| 类型 | maven2(group) |
| name | maven-group |
| blob store | maven-central |
| member repositories | maven-snapshots |
| member repositories | maven-releases |
| member repositories | maven-central |
| !这里写图片描述 |
#安装Maven 具体安装请参看如下文章:
| 项目 | 详细 |
|---|---|
| 容器方式 | [***] |
| 裸机方式 | [***] |
| 此处为演示方便使用裸机方式,直接安装到centos上。 | |
| ##安装后的确认 |
[root@liumiaocn ~]# which mvn /usr/local/maven/apache-maven-3.3.9/bin/mvn [root@liumiaocn ~]# mvn --version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00) Maven home: /usr/local/maven/apache-maven-3.3.9 Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /usr/local/java/jdk1.8.0_121/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix" [root@liumiaocn ~]#
##设定maven
[root@liumiaocn .m2]# pwd /root/.m2 [root@liumiaocn .m2]# cat cat settings.xml cat: cat: No such file or directory <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="[***]" xmlns:xsi="[***]" xsi:schemaLocation="[***] [***]"> <servers> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> </servers> <mirrors> <mirror> <id>central</id> <name>central</name> <url>[***]</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> </settings> [root@liumiaocn .m2]#
#设定project
| 项目 | 详细说明 |
|---|---|
| demo项目 | spring boot 的demo项目,显示hello world |
| 生成参照 | [***] |
| 注意事项:上面的参照的时候spring boot用的1.4.2, 现在稳定版本在1.5.2,不过使用SPRING INITIALIZR可以不用意识。或者使用自己的Maven项目,在pom中类似的设定即可。 |
[root@liumiaocn discoveryservice]# cp pom.xml pom.xml.bak [root@liumiaocn discoveryservice]# vi pom.xml [root@liumiaocn demo-repo-snapshot]# diff pom.xml pom.xml.bak 49,54d48 < <repositories> < <repository> < <id>maven-group</id> < <url>[***]</url> < </repository> < </repositories> 56,65d49 < <distributionManagement> < <snapshotRepository> < <id>maven-snapshots</id> < <url>[***]</url> < </snapshotRepository> < <repository> < <id>maven-releases</id> < <url>[***]</url> < </repository> < </distributionManagement> [root@liumiaocn demo-repo-snapshot]#
#执行确认 ##mvn install
[root@liumiaocn demo-repo-snapshot]# mvn install [INFO] Scanning for projects... Downloading: [***] Downloaded: [***] (8 KB at 2.5 KB/sec) Downloading: [***] ...... Downloaded: [***] (5 KB at 5.8 KB/sec) [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building demo-repo-snapshot 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: [***] ...... Downloaded: [***] (218 KB at 7.8 KB/sec) [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo-repo-snapshot --- Downloading: [***] ...... Downloaded: [***] (625 KB at 10.8 KB/sec) [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /root/demo-repo-snapshot/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ demo-repo-snapshot --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /root/demo-repo-snapshot/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ demo-repo-snapshot --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /root/demo-repo-snapshot/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ demo-repo-snapshot --- Downloading: [***] ...... Downloaded: [***] (309 KB at 12.1 KB/sec) [INFO] Surefire report directory: /root/demo-repo-snapshot/target/surefire-reports Downloading: [***] ...... Downloaded: [***] (67 KB at 14.3 KB/sec) ------------------------------------------------------- T E S T S ------------------------------------------------------- 07:03:51.413 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.example.DemoRepoSnapshotApplicationTests] ...... 07:03:52.138 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding [Inlined Test Properties] PropertySource with highest search precedence . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.2.RELEASE) ...... Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ demo-repo-snapshot --- Downloading: [***] ...... Downloaded: [***] (370 KB at 18.9 KB/sec) [INFO] Building jar: /root/demo-repo-snapshot/target/demo-repo-snapshot-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:1.5.2.RELEASE:repackage (default) @ demo-repo-snapshot --- Downloading: [***] ...... Downloaded: [***] (2204 KB at 8.0 KB/sec) [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ demo-repo-snapshot --- Downloading: [***] ...... Downloaded: [***] (228 KB at 7.3 KB/sec) [INFO] Installing /root/demo-repo-snapshot/target/demo-repo-snapshot-0.0.1-SNAPSHOT.jar to /root/.m2/repository/com/example/demo-repo-snapshot/0.0.1-SNAPSHOT/demo-repo-snapshot-0.0.1-SNAPSHOT.jar [INFO] Installing /root/demo-repo-snapshot/pom.xml to /root/.m2/repository/com/example/demo-repo-snapshot/0.0.1-SNAPSHOT/demo-repo-snapshot-0.0.1-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 19:59 min ...... [root@liumiaocn demo-repo-snapshot]#
##确认maven-central 可以看到此spring boot的demo项目所需要的所有依赖都已经在proxy的maven-central中进行了管理。 !这里写图片描述
##确认demo ###执行 使用编译生成的jar包,启动spring boot
[root@liumiaocn demo-repo-snapshot]# java -jar target/demo-repo-snapshot-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.2.RELEASE) ......
###确认页面 可以看到使用编译出来的jar包,spring boot是能够正常动作的。 !这里写图片描述
#CSDN [***]



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务