在Docker上部署Nexus

这篇文章主要介绍了:如何通过镜像部署Nexus。参考了https://hub.docker.com/r/sonatype/nexus3/https://github.com/sonatype/docker-nexus并梳理了一些容易踩到的坑。
docker的安装和加速参见Linux安装Docker

本文基于Centos,其他环境大同小异

1.部署

1.1 下载镜像

1
$ docker pull sonatype/nexus3

这里注意,nexus有两个镜像sonatype/docker-nexus3sonatype/nexus3,请不要选择带docker的。

1.2 启动

1
2
$ docker  volume create  vo-nexus-data    #创建一个卷
$ docker run -d -it -p 18090:8081 -p 18091:8082 -p 18092:8083 -e TZ=Asia/Shanghai -v /etc/localtime:/etc/localtime:ro --ulimit nofile=65536:65536 -e MAX_HEAP=13G --name nexus -v vo-nexus-data:/nexus-data --restart=always sonatype/nexus3:3.38.0

参数说明:

  1. 修改文件描述符数量,--ulimit nofile=65536:65536默认是不需要的,只有当你使用的是sonatype/nexus3才需
  2. 加载卷,--mount type=volume,src=vo-nexus-data,target=/nexus-data,这里使用的是mount方式,也可以通过-v vo-nexus-data:/nexus-data,这么写是方便大家理解持久化的数据被多容器访问
  3. 端口,-p 18090:8081,nexus内部使用的是8081端口,不用改变,我们将物理机的18090端口映射到容器内部;-p 18091:8082是额外冗余的端口,用于类似docker之类的服务
  4. 容器名称,--name nexus,这里默认使用nexus,可以随意更改,不和已有的容器重复即可
  5. 自动重启,--restart=always
  6. volume create的相关参数可以参见官方文档(https://docs.podman.io/en/latest/markdown/podman-volume-create.1.html)。

1.3 查看Nexus

1
$ docker ps -a #查看所有容器

示例如下:

1
2
3
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                                   NAMES
b272ea267a8d sonatype/nexus3 "sh -c ${SONATYPE_..." 4 minutes ago Up 6 seconds 8081/tcp, 0.0.0.0:18090->8081/tcp nexus
#这里的b272ea267a8d是你的容器ID,你实际的容器ID,和这个不一样

进入容器并修改文件

1
2
3
$ docker exec -i -t -u 0 b272ea267a8d bash  #登录
$ cat /nexus-data/admin.password # 查看 默认密码,`sonatype/nexus3`才需要
$ vim /opt/sonatype/sonatype-work/nexus3/etc/nexus.properties #nexus的配置文件

访问这台主机的ip:18090,就可以看到启动页面了.
默认账号是:admin
默认密码是:admin123

2.使用和配置

可以参考nexus配置的一些实践