Docker化Sonatype Nexus Repository 3的多平台部署方案
docker-nexus3项目提供了Sonatype Nexus Repository 3的Docker化解决方案。除了基于Red Hat Universal Base Image的主要版本外,还支持Alpine等多个平台。项目详细说明了容器的运行、构建和测试方法,支持数据持久化和自定义配置。文档涵盖了贡献指南、构建过程和社区支持渠道,便于用户部署和使用Nexus Repository。
这是 Sonatype Nexus Repository 3 的 Dockerfile,从 3.18 版本开始,镜像基于 Red Hat 通用基础镜像,而早期版本使用 CentOS。
请阅读我们的贡献指南,以更好地了解我们希望贡献流程如何进行。
要运行并将暴露的端口 8081 绑定到主机,请使用:
$ docker run -d -p 8081:8081 --name nexus sonatype/nexus3
停止时,请确保留出足够的时间让数据库完全关闭。
docker stop --time=120 <容器名称>
测试:
$ curl http://localhost:8081/
要从 Dockerfile 构建 Docker 镜像,可以使用以下命令:
$ docker build --rm=true --tag=sonatype/nexus3 .
构建镜像时可以使用以下可选变量:
NEXUS_VERSION
从 Sonatype 下载的替代方案NEXUS_VERSION
或 NEXUS_DOWNLOAD_URL
,则此项为必填Chef Solo 用于构建 Docker 镜像的运行时和应用程序层。使用的 Chef cookbook 可在 GitHub 上的 sonatype/chef-nexus-repository-manager 获得。
我们使用 rspec
作为测试框架。serverspec
提供了一个 Docker 后端(参见测试代码中的 set
方法)来在 Docker 容器内运行测试,并在测试中抽象掉不同发行版之间的差异(如 yum、apt 等)。
rspec [--backtrace] spec/Dockerfile_spec.rb
可以使用 Dockerfile.rh.ubi 创建 Red Hat 认证容器镜像,该镜像符合 Red Hat 认证标准。该镜像包括额外的元数据以符合 Kubernetes 和 OpenShift 标准,一个包含适用软件许可证的目录,以及一个关于如何使用软件的帮助文件。它还使用 ENTRYPOINT 脚本确保运行用户具有适当的权限以满足 OpenShift 的"受限"SCC。
Red Hat 认证容器镜像可从 Red Hat Container Catalog 获得,符合条件的账户可以从 registry.connect.redhat.com 拉取。
除了通用基础镜像外,我们还可以基于以下系统构建镜像:
可以使用 Dockerfile.alpine.java11 创建基于 Alpine 的容器镜像。这个 Dockerfile 旨在利用 Alpine Linux 的简约和高效特性,强调减少依赖以实现更清晰的软件物料清单(SBOM)和更强的安全态势。
基于 Alpine 的容器镜像包含最少的依赖项,并使用 ENTRYPOINT 脚本确保应用程序以必要的权限运行。它针对快速部署和高效的资源利用进行了优化。
可以从 Docker Hub 获取基于 Alpine 的容器镜像,使用以下标签拉取: