Bootstrap

docker、docker-compose 下安装maven私服库nexus3并且配置使用

docker、docker-compose 下安装maven私服库nexus3并且配置使用

1、下载镜像

docker pull sonatype/nexus3:3.34.1

2、docker run指令

nexus的一些配置信息,索引信息、数据信息等,都是在容器的一个文件夹里,需要挂载出来,我们先创建一个宿主机的挂载目录,并给到权限,容器内的nexus3启动的时候,读取是nexus的权限,如果权限不对的话,导致读取不到文件数据,启动会报错;并且,data目录,也不会有文件内容挂载出来;如图所示:

执行一下指令,创建目录

mkdir -p /opt/nexus/data && chown -R 200 /opt/nexus/data 

执行 docker run执行

docker run -d -p 8081:8081 --name nexus -v /opt/nexus/data:/nexus-data sonatype/nexus3:3.34.1

3、docker-compose脚本

version: '3'
services:
  nexus3:
    image: sonatype/nexus3:3.34.1
    container_name: nexus3
    restart: always
    ports:
      - 8081:8081
    volumes:
      - ./data:/nexus-data

挂在卷这里,./data表示当前docker-compose.yml文件所在的目录下的 data目录, 也就是当前目录下的data目录

4、启动

docker-compose up -d

5、卸载

docker-compose down

6、nexus3 第一次启动配置

6.1、登录

http://192.168.68.129:8081/

默认帐号:admin

默认密码:在挂载出来的文件里的admin.password有 目录为/opt/nexus/data/admin.password

第一次登录,需要修改密码,设置一些选项,修改密码、是否开启匿名认证、完成;具体如图所示:

6.2、maven的默认库介绍

maven-central:中央库

maven-releases:私服里的正式包

maven-snapshots:私服里的快照包

maven-public:公共的分组

其中maven-public是几个库的合集,如图所示:

6.3、新建一个代理阿里云的Repositories库

类型选择maven2(proxy)

选择maven-public公共分组,把新加的阿里云的代理的私服库加入组里,也可以调整顺序,拉私服库的jar包时候,是从上到下的;

6.4、本地连接上私服

我们首先看下,因为是刚刚搭建的私服库,里面是没有任何jar包的

本地要连上私服库,可以配置两个地方

6.4.1、maven的settings.xml配置,新增私服镜像地址

首先找到私服库的地址,如图:

然后settings.xml新增配置

<servers>标签下新增

		<server>
            <id>nexus</id>
            <username>admin</username>
            <password>admin123</password>
        </server>

<mirrors>标签下新增

        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>nexus.</name>
			<url>http://192.168.68.129:8081/repository/maven-public/</url>
        </mirror>

<profiles>标签下新增

	    <profile>
            <id>nexus</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <url>http://192.168.68.129:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <url>http://192.168.68.129:8081/repository/maven-public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

注意,标签下的<id>nexus</id>要一致。

6.4.2、在pom.xml文件里新增配置
    <repositories>
        <repository>
            <id>nexus</id>
            <name>maven-nexus</name>
            <url>http://192.168.68.129:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

<id>nexus</id>要跟settings.xml一致

如果两个都配置,pom.xml的优先级要大于settings.xml

7、jar包上传私服库

7.1、 settings.xml配置

<servers>标签下,新增两个服务,分别对应 releasessnapshots

		<server>
			<id>releases</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		<server>
			<id>snapshots</id>
			<username>admin</username>
			<password>admin123</password>
		</server>

7.2、pom.xml配置

    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Releases</name>
            <url>http://192.168.68.129:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshot</name>
            <url>http://192.168.68.129:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

<id>nexus</id>要跟settings.xml一致

7.3、在当前的pom.xml文件下,执行mvn deploy

详细参看《docker-hub 文档》

;