美文网首页程序员
安装Nexus 3用于Docker和Java

安装Nexus 3用于Docker和Java

作者: 无知者云 | 来源:发表于2018-03-22 13:45 被阅读0次

    上一篇文章到了Nexus 3的基本使用,这里讲述一下全新安装Nexus 3并且完成后续配置的过程。

    通过Docker运行Nexus3:

    docker run -d -p 8081:8081 -p 5000:5000 -v $(pwd)/nexus-data:/nexus-data --name nexus3 sonatype/nexus3:3.9.0
    

    以上命令会在宿主机的当前目录下自动创建nexus-data目录用于映射container中的/nexus-data数据,需要注意的是这里的$(pwd)/nexus-data必须是一个绝对路径,不然docker会将其当做volume来处理。

    这里的8081端口用于访问Nexus的界面,5000端口用于Docker Registry向外暴露端口。

    启动之后,打开http://localhost:8081可以看到以下界面:

    Nexus主界面

    点解右上角的Sign in,使用默认管理员账号登录:

    • 用户名:admin
    • 密码:admin123

    登陆后进入配置页面,进而进入Repository页面:


    Repositories界面

    此时可以看到Nexus在默认情况下已经创建了多个Repository,主要是Maven和Nuget,由于我们只需要Java的Repository,故删除所有Nuget相关的Repository。

    然后拷贝maven-public的URL:http://localhost:8081/repository/maven-public/,maven-public是一个group类型的Repository,既代理(proxy)了远程的Maven Central,有包含了自建(hosted)的maven-releases。至于什么是group,proxy,hosted,请参考这里

    在自己的一个Java项目中尝试使用maven-public,在Java项目的build.gradle中使用:

    repositories {
        maven {
            url "http://localhost:8081/repository/maven-public/"
        }
    }
    

    在构建了Java项目之后,maven-public中便有了多个Java的component,这是因为Java项目尝试从maven-public中下载依赖,而maven-public包含了maven-central,maven-central又代理的远程的Maven Central,因此我们Java项目事实上是从Maven Central上下载的依赖,然后缓存于Nexus中,然后Nexus中也可以看到了。

    使用Docker Repository

    首先要创建一个DockerRepository:


    创建Docker Repository

    需要注意但是,这里的“Repository”一词实则是docker的Registry,而不是Docker Hub中的Repository概念,Docker Hub中的Repository更像是Nexus中的Component。

    这里务必需要选择"Repository Connectors"中的HTTP或者HTTPS,我们选择了HTTP,并设置端口为5000,原因请查看这里

    然后创建一个用户用于docker login,主要是需要有push权限。先创建相应的Role:

    创建Role

    接下来创建拥有该Role的User:


    创建User

    通过docker命令使用Docker Repository

    创建好Repository和User后,我们便可以正常使用Docker Repository了,先在命令行登录Docker Repository:

    docker login localhost:5000
    

    请注意,这里需要显式地跟上localhost:5000,否则docker会默认登录Docker Hub。

    然后就可以将本地已有的镜像push到Nexus的Docker Repository中了,比如本地有个alpine镜像:

    alpine                  latest              3fd9065eaf02        2 months ago        4.15MB
    

    在push之前,需要给alpine指定正确的tag,正确的格式为:hostname:port/image-name:tag,如果只有image-name:tag部分,那么docker push默认会将镜像push到Docker Hub中。

    通过docker tag给alpine打tag:

    docker tag alpine localhost:5000/alpine:1.0
    

    最后push镜像:

    docker push localhost:5000/alpine:1.0
    

    最后查看镜像:


    浏览镜像

    相关文章

      网友评论

        本文标题:安装Nexus 3用于Docker和Java

        本文链接:https://www.haomeiwen.com/subject/bhuoqftx.html