Docker 环境下搭建nexus私服

一、安装docker

1、脚本安装

本机环境CentOS7,用户为root

下载脚本到工作目录
curl -fsSL https://get.docker.com -o get-docker.sh
执行脚本
sudo sh get-docker.sh

执行完会自动退出shell,需要重新登录。

二、安装docker-compose(可选)

1、脚本安装
安装docker-compose的可执行命令到/usr/local/bin
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

不出意外,本地网络是下载不动的...

可以尝试 Github手动下载,或者开加速器。下载完成后copy到/usr/local/bin,然后增加可执行权限

三、启动docker

service docker start
或
systemctl start docker

四、拉取镜像

1、查找镜像
docker search nexus

一般安装star数最多的版本,目前最新是sonatype/nexus3

2、拉取镜像
docker pull sonatype/nexus3

五、利用docker启动容器(五或六任选其一)

1、最简单的方式:
docker run -p 8081:8081 --name nexus sonatype/nexus3
2、指定数据卷,防止每次启动容器,容器里的数据丢失,实现容器和虚拟机数据共享。
如果有容器和下面要创建的容器同名的话,先删除
docker rm <container_name>

指定虚拟机与容器共享的文件夹
mkdir /usr/local/docker/nexus/nexus-data

启动容器
docker run -p 8081:8081 --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data snoatype/nexus3
指定数据卷后启动,可能会报一些权限错误,导致启动不起来。可能会需要修改文件夹权限
chmod 777 /usr/local/docker/nexus/nexus-data

六、利用docker-compose启动nexus容器(五或六任选其一)

1、创建docker-compose.yml
mkdir /usr/local/docker
cd /usr/local/docker
vi docker-compose.yml
docker-compose.yml内容如下:
version: "3.7"
services:
  nexus:
    restart: "no" 
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8081:8081 
    volumes:
      - /usr/local/docker/nexus/nexus-data:/nexus-data

version : 指定docker-compose语法版本,版本不同,支持的docker也不同

restart

services : 多种服务的根节点

nexus : 服务名随意起,代表要创建的服务

restart : 容器的重启策略,有no、always、on-failure、
unless-stopped四种可选值。

image : 容器依据的镜像

container_name : 容器名

ports : 端口

volumes : 数据卷

注意:yml文件缩进必须用空格

七、访问nexus

1、打开浏览器,访问 http://<host address>:8081/
2、管理员登录密码在 /usr/local/docker/nexus/nexus-dataadmin开头的文件中,将其拷贝输入即可。
3、登录之后会要求修改密码,按要求修改即可。

八、项目发布到nexus的仓库

1、首先修改maven的setting.xml文件,添加用户信息,以便jar包上传私服时进行身份认证,修改内容如下:
<servers>
    <server>
          <id>maven-releases</id>
          <username>admin</username>
          <password>112233</password>
    </server>
    <server>
      <id>maven-snapshots</id>
      <username>admin</username>
      <password>112233</password>
    </server>
</servers>

id : 为nexus的仓库名称,

username : nexus用户名

password : nexus密码

2、创建maven项目,修改pom.xml

增加发布管理节点

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

snapshotRepository : 快照仓库

repository : 发行仓库

id : 与上面的server的id一致

name : 随便

url : 仓库地址,从nexus中可以找到

3、项目打包发布

maven会根据<version/>中是否含有SANPSHOT来选择是发布到快照仓库,还是发行版仓库

项目打包
mvn clean package -Dmaven.test.skip=true
项目发布
mvn deploy

运行完便可在nexus中看到自己的项目了。

九、jar包安装到nexus私服

有时项目开发时,一些maven依赖下载不下来,一直报错。这时,可以手动下载jar包,将其安装到nexus私服,再从nexus解决依赖问题。下面以安装kaptcha为例:

mvn deploy:deploy-file -DgroupId=com.google.code.kaptcha -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar -Dfile=D:\kaptcha-2.3.2.jar -Durl=http://192.168.172.141:8081/repository/third/ -DrepositoryId=third

DgroupId : jar包的groupId

Dversion : jar包的版本

Dfile : jar包所在位置

Durl : 仓库地址

DrepositoryId : 仓库名

这里新建了名为third的第三方仓库,注意要在setting.xml增加一个server节点,配置用户名和密码。同时要将third仓库加到maven-public组中,因为第十步要依赖的是maven-public组。将 third加入maven-pulic组后,只要依赖maven-public,便可取到third中的jar包。

十、从nexus下载依赖

pom.xml中增加如下仓库配置:

<repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>http://192.168.172.141:8081/repository/maven-public/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Nexus Plugin Repository</name>
            <url>http://192.168.172.141:8081/repository/maven-public/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
可以看到 上面的url节点填写的都是maven-public组的url,而maven-releases,maven-snapshots,third都包含在maven-public中,所以能取到三个仓库的内容。
posted @ 2019-07-22 09:01  我头发还多  阅读(...)  评论(...编辑  收藏