Sign inSign up

liumiaocn/nexus

By liumiaocn

•Updated almost 7 years ago

Nexus OSS Docker image

Image
0

1.3K

liumiaocn/nexus repository overview

这里写图片描述 Nexus作为私库管理最为流行的工具之一,用于包的管理和Docker镜像管理的私库管理场景中非常常用。Easypack利用最新版本的oss版Nexus作为基础镜像用于提供类似服务。本文将同时给出具体步骤结合Maven以实现使用Nexus进行包的管理。

#Why 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

项目详细
URLhttp://192.168.32.123:8081/⁠
用户名称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设定。

项目详细说明
namemaven-snapshots
version policysnapshot
deployment policyallow redeploy
blob storemaven-snapshots
这里写图片描述
确认
这里写图片描述

##创建release的仓库 在Maven的Pom文件中的version标签内定义的以-SNAPSHOT结尾以外的版本tag统一在如下release仓库中进行管理。创建release的仓库步骤以及所用到的信息如下:

项目详细说明
类型maven2(hosted)
namemaven-releases
deployment policyallow redeploy
blob storemaven-releases
这里写图片描述

##创建proxy仓库 创建proxy仓库,default以外的值设定如下:

项目详细说明
类型maven2(proxy)
namemaven-central
location of the remote repository being proxiedhttps://repo1.maven.org/maven2⁠
blob storemaven-central
Maximum component age1440
这里写图片描述

最后确认的时候才发现上图中的location of the remote repository being proxied选项写错了,无法下载到本地,所以建议URL方式的设定之前先手动确认一下是否正确 这里写图片描述

##创建group仓库 为提供统一的URL进行管理,按照如下方式创建group仓库:

项目详细说明
类型maven2(group)
namemaven-group
blob storemaven-central
member repositoriesmaven-snapshots
member repositoriesmaven-releases
member repositoriesmaven-central
这里写图片描述

#安装Maven 具体安装请参看如下文章:

项目详细
容器方式http://blog.csdn.net/liumiaocn/article/details/57064776⁠
裸机方式http://blog.csdn.net/liumiaocn/article/details/61920553⁠
此处为演示方便使用裸机方式,直接安装到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="http://maven.apache.org/SETTINGS/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">

  <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>http://192.168.32.123:8081/repository/maven-group/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>

</settings>
[root@liumiaocn .m2]#

#设定project

项目详细说明
demo项目spring boot 的demo项目,显示hello world
生成参照http://blog.csdn.net/liumiaocn/article/details/53442364⁠
注意事项:上面的参照的时候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>http://192.168.32.123:8081/repository/maven-group</url>
<     </repository>
<   </repositories>
56,65d49
<    <distributionManagement>
<      <snapshotRepository>
<        <id>maven-snapshots</id>
<        <url>http://192.168.32.123:8081/repository/maven-snapshots/</url>
<      </snapshotRepository>
<      <repository>
<        <id>maven-releases</id>
<        <url>http://192.168.32.123:8081/repository/maven-releases/</url>
<      </repository>
<    </distributionManagement>
[root@liumiaocn demo-repo-snapshot]#

#执行确认 ##mvn install

[root@liumiaocn demo-repo-snapshot]# mvn install
[INFO] Scanning for projects...
Downloading: http://192.168.32.123:8081/repository/maven-group/org/springframework/boot/spring-boot-starter-parent/1.5.2.RELEASE/spring-boot-starter-parent-1.5.2.RELEASE.pom
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/springframework/boot/spring-boot-starter-parent/1.5.2.RELEASE/spring-boot-starter-parent-1.5.2.RELEASE.pom (8 KB at 2.5 KB/sec)
Downloading: http://192.168.32.123:8081/repository/maven-group/org/springframework/boot/spring-boot-dependencies/1.5.2.RELEASE/spring-boot-dependencies-1.5.2.RELEASE.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/springframework/security/spring-security-bom/4.2.2.RELEASE/spring-security-bom-4.2.2.RELEASE.pom (5 KB at 5.8 KB/sec)
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building demo-repo-snapshot 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://192.168.32.123:8081/repository/maven-group/org/springframework/boot/spring-boot-maven-plugin/1.5.2.RELEASE/spring-boot-maven-plugin-1.5.2.RELEASE.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar (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: http://192.168.32.123:8081/repository/maven-group/org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/com/google/collections/google-collections/1.0/google-collections-1.0.jar (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: http://192.168.32.123:8081/repository/maven-group/org/apache/maven/surefire/maven-surefire-common/2.18.1/maven-surefire-common-2.18.1.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar (309 KB at 12.1 KB/sec)
[INFO] Surefire report directory: /root/demo-repo-snapshot/target/surefire-reports
Downloading: http://192.168.32.123:8081/repository/maven-group/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/apache/maven/surefire/surefire-junit4/2.18.1/surefire-junit4-2.18.1.jar (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: http://192.168.32.123:8081/repository/maven-group/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/org/apache/commons/commons-compress/1.9/commons-compress-1.9.jar (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: http://192.168.32.123:8081/repository/maven-group/org/springframework/boot/spring-boot-loader-tools/1.5.2.RELEASE/spring-boot-loader-tools-1.5.2.RELEASE.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/com/google/guava/guava/18.0/guava-18.0.jar (2204 KB at 8.0 KB/sec)
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ demo-repo-snapshot ---
Downloading: http://192.168.32.123:8081/repository/maven-group/commons-codec/commons-codec/1.6/commons-codec-1.6.pom
......
Downloaded: http://192.168.32.123:8081/repository/maven-group/commons-codec/commons-codec/1.6/commons-codec-1.6.jar (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 http://blog.csdn.net/liumiaocn/article/details/61931847⁠

Tag summary

Content type

Image

Digest

Size

225.6 MB

Last updated

almost 9 years ago

docker pull liumiaocn/nexus