首页 > 其他分享 >Docker方式搭建Maven私服

Docker方式搭建Maven私服

时间:2024-09-22 19:35:09浏览次数:6  
标签:200 Sep 仓库 私服 Maven xr Docker maven

私服搭建

如下讲解如何基于Docker方式快速搭建Nexus3私服。

编写docker-compose.yaml文件,内容如下:

version: '2'

services:

  nexus3:
    image: sonatype/nexus3:3.72.0
    container_name: nexus3
    restart: always
    ports:
      - '8081:8081' 
    volumes:
      - '/data/opt/nexus3/data:/nexus-data'

为了避免因为目录访问权限问题导致Docker容器启动失败,需要修改宿主机的/data/opt/nexus3/data目录权限(可以授予所有权限,如:chmod -R 777 /data/opt/nexus3/data)。

执行docker-compose up启动容器,在浏览器中访问http://宿主机IP:8081地址,点击页面右上角的【Sign In】按钮, 就会出现下图登录弹窗:

Nexus默认登录账号为admin, 并且密码位于文件/nexus-data/admin.password下, 只需在本地配置的挂载目录/data/opt/nexus3/data下查看该文件即可。

$ ls -al /data/opt/nexus3/data/
total 80
drwxrwxrwx  14 root root  4096 Sep 13 09:36 .
drwxr-xr-x   3 root root  4096 Sep 13 09:34 ..
-rw-r--r--   1  200  200    36 Sep 13 09:36 admin.password  # 这就是nuxus的默认密码文件
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 blobs
drwxr-xr-x 347  200  200 12288 Sep 13 09:35 cache
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 db
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 elasticsearch
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 etc
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 generated-bundles
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 instances
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 javaprefs
-rw-r--r--   1  200  200     1 Sep 13 09:35 karaf.pid
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 keystores
-rw-r--r--   1  200  200    14 Sep 13 09:35 lock
drwxr-xr-x   5  200  200  4096 Sep 22 15:39 log
-rw-r--r--   1  200  200     5 Sep 13 09:35 port
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 restore-from-backup
drwxr-xr-x   8  200  200  4096 Sep 13 09:36 tmp

输入默认的账号密码成功登录之后,Nexus就会强制要求修改admin用户的密码, 并且设置基本访问权限,完成之后就正式进入了Nexus私服后台管理页面。

进入Nexus私服的配置界面,需要对默认配置进行几点调整。

修改私服中央仓库的代理仓库

修改私服中央仓库的代理仓库地址是为了加速访问。

将私服配置里中央仓库的代理仓库路径修改为阿里云仓库提供的代理地址:http://maven.aliyun.com/repository/central

创建hosted类型的仓库

创建hosted类型仓库(宿主仓库)是为了在私服中部署自定义组件。

点击Create repository:

然后选择类型为maven2(hosted)

然后输入仓库名称,并在Version policy一栏中选择Release,表示这个仓库的存储依赖为正式发布的组件,然后在Deployment policy一栏中选择Allow redeploy,表示允许部署和更新私服上的组件。

最后点击Create repository,就可以在仓库列表看到自定义的仓库了。
有了release仓库,再按照同样方式操作添加一个snapshot仓库,只需在Version policy一栏调整为Snapshot即可。

添加角色

Nexus默认只有两种角色:nx-anonymousnx-admin,前者只有浏览的权限,后者为管理员权限,一般情况下,还需要正对开发人员创建个角色。
点击Create Role,添加一个Role IDdeveloper的自定义角色,并且只添加自定义仓库的使用权限,删除操作除外。

添加用户

跟权限类似,默认的用户只有两种:adminanonymous,同样需要创建属于开发者的用户对象。
点击Create local user,填入用户名,密码等必填信息之后,关联角色,并保存即可。

用户创建完成之后,就可以用新的用户登录私服,查看对应权限的内容了。

设置仓库组

仓库组既然是“组”的概念,说明它里面可以包含多个仓库。

因为maven用户可以从代理仓库和宿主仓库中下载构建至本地仓库,为了方便从代理仓库和宿主仓库下载构建,maven提供了仓库组。

仓库组可以包含多个宿主仓库和代理仓库,maven用户访问一个仓库组就可以访问该仓库下的所有仓库。

仓库组中的多个仓库是有顺序的,当maven用户从仓库组中下载构建时,会按顺序在仓库组中查找组件,查到了就返回给本地仓库,所以一般将速度快的放前面。

仓库组内部实际是没有内容的,只是起到一个请求转发的作用,将maven用户的下载请求转发给其它仓库处理。

nexus默认有仓库组maven-public

点击maven-public打开如下:

仓库组对外URL:本地maven可以通过这个url从仓库组中下载构件至本地仓库。

仓库组中成员:刚刚新增的private-releaseprivate-snapshot在左边,需要将它们添加到到右边的成员列表中,并且放在最开始的位置,因为前面说过仓库组的查找是有顺序的,将宿主仓库放在最前面,这样查依赖时会最先从宿主仓库中查找,找不到时再从其他仓库查找,这样就能解决从私服下载内部构建组件的问题了(如果不这样设置,就无法下载部署到宿主仓库的组件)。

使用私服下载依赖

有了私服和账号,就需要在本地Maven配置文件setting.xml进行关联配置。

设置server账户信息

servers节点中配置server,用于连接Maven私服时进行认证。

  • id可以自己命名,后面需要与项目中保持一致。
  • username可以是admin,也可以是新创建的用户,密码是新建用户时设置的密码。
<servers>
  <!-- 下载时的认证 -->
  <server>
    <id>test</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>
</servers>

设置私服仓库地址

以下设置都是在本地Maven的conf/settings.xml文件中进行配置。

设置下载依赖的地址,在mirrors标签下添加如下内容:

<mirrors>
  <!-- 用搭建好的私服的地址 -->
  <mirror>
      <id>central</id>
      <mirrorOf>*</mirrorOf>
      <name>Central Repository</name>
      <!-- 私服仓库组地址 -->
      <url>http://192.168.13.29:8081/repository/maven-public/</url>
  </mirror>
  <!-- 把阿里云的注释掉 -->
  <!-- 
  <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>
  -->
</mirrors>

发布本地项目到私服

Maven配置

首先在Maven的settings.xml中配置登录信息(因为Nexus的仓库对于匿名用户是只读的,为了能够部署构件,还需要配置认证信息)。

<servers>
  <!-- 下载时的认证 -->
  <server>
    <id>test</id>
    <username>user_name</username>
    <password>user_pass</password>
  </server>

  <!-- 部署认证 -->
  <server>
    <id>private-release</id> <!-- id 和下面 profiles 中的配置一致-->
    <username>user_name</username>
    <password>user_pass</password>
  </server>
  
  <!-- 部署认证 -->
  <server>
    <id>private-snapshot</id> <!-- id 和下面 profiles 中的配置一致-->
    <username>user_name</username>
    <password>user_pass</password>
  </server>
</servers>

profiles标签下添加如下内容:

<profiles>
  <profile>
    <id>dev</id>
    <repositories>
      <repository>
        <id>private-release</id>
        <url>http://192.168.13.29:8081/repository/private-release/</url>
      </repository>
      <repository>
        <id>private-snapshot</id>
        <url>http://192.168.13.29:8081/repository/private-snapshot/</url>
      </repository>
    </repositories>
  </profile>
</profiles>

项目配置

在项目的pom.xml文件中进行如下配置:

<!-- 指定仓库名称 -->
<distributionManagement>
  <repository>
    <!--id与 maven settings.xml 中的id文件保持一致-->
    <id>private-release</id>
    <!--对应的私服宿主仓库地址-->
    <url>http://192.168.13.29:8081/repository/private-release/</url>
  </repository>
  <snapshotRepository>
    <!--id与 maven settings.xml 中的id文件保持一致-->
    <id>private-snapshot</id>
    <!--对应的私服宿主仓库地址-->
    <url>http://192.168.13.29:8081/repository/private-snapshot/</url>
  </snapshotRepository>
</distributionManagement>

<build>
  <pluginManagement>
    <plugins>
      <!--发布代码Jar插件-->
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.7</version>
      </plugin>
      <!--发布源码插件-->
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <executions>
              <execution>
                  <phase>package</phase>
                  <goals>
                      <goal>jar</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

然后在IDEA中打开Maven菜单,双击deploy按钮即可完成发布。

【参考】
史上最详细的 Maven 私服搭建与使用指南
maven私服搭建详细教程

标签:200,Sep,仓库,私服,Maven,xr,Docker,maven
From: https://www.cnblogs.com/nuccch/p/18425742

相关文章

  • maven安装及配置
    1.官网下载、解压缩 2.配置环境变量mvn-version检查环境变量是否生效 3.配置本地仓库新建文件夹如下 修改配置文件,增加如下配置 4.配置镜像和jdk<mirror><id>alimaven</id><name>aliyunmaven</name><url>http://maven.aliyun.com......
  • docker无法启动排查运维记录
    DockerDaemon连接问题解决文档问题描述在使用Docker命令时,遇到以下错误:~$dockerimagesCannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.Isthedockerdaemonrunning?问题分析经过查询,问题可能与iptables设置有关。解决步骤切换iptabl......
  • ubuntu 安装 docker相关
    在Ubuntu系统上安装Docker可以通过以下步骤进行:更新软件包索引: sudoapt-getupdate允许APT使用HTTPS: sudoapt-getinstallapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker官方GPG密钥: curl-fsSLhtt......
  • Docker更换镜像源(附国内可用镜像源地址)
    众所都周知,2024年6月以后国内很多大型的Docker镜像站都停止了服务或改为内部使用,包括但不限于:阿里、网易、腾讯、中科大等。具体已经停止服务的以及可用的镜像列表可以在这里找到:https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6更换Docker镜像源只需编辑/etc/do......
  • Docker进入容器运行命令实例讲解
    Docker进入容器运行命令实例讲解在Docker中,要进入正在运行的容器并执行命令,主要使用dockerexec命令。这个命令允许你在运行中的容器内执行一个新的命令,这对于调试、运行附加的进程或在容器内部进行管理操作非常有用。基本语法dockerexec[OPTIONS]CONTAINERCOMMAND[ARG......
  • Jenkins 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署Jenkins#vimdocker-jenkins/docker-compose.ymlservices:jenkins:image:jenkins/jenkins:lts......
  • Docker 前后端部署流程
    Docker前后端部署流程1Docker基本知识2后端部署使用tomcat容器部署后端#创建数据卷,映射出tomcat容器的webapps目录和logs目录mkdir-p/usr/local/dockertest/tomcat/webapps/usr/local/dockertest/tomcat/logs设置tomcat容器日志方式tomcat默认logs下没有catalina.......
  • Docker常见问题汇总
    Docker端口映射不能访问现象:在公司内网虚拟机上使用Docker部署的禅道服务,之前访问一直都好好的,突然在某天的某个时间点就无法正常访问了,在主机上查看端口映射都是正常的(而且端口也同样被占用了),通过telnet命令也确实无法访问通。原因排查:Linux未开启内核转发功能,如下:#0代表内......
  • centos 一键安装docker+docker-compose
    点击查看代码#!/bin/shecho"开始安装docker/docker-compose"echo"1)安装/升级Docker客户端,安装必要的一些系统工具"yumupdate-yyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2echo"2)添加软件源信息"yum-config-manager--add-repohttp://mirrors.......
  • maven
    09-maven一传统项目在使用依赖时的弊端Maven是什么Maven是一个项目管理工具一键构建->使用一个命令能实现项目的编译,测试,打包,安装和部署依赖管理->使用简单的方式管理项目中的jar传统项目使用中的弊端Jar需要手动下载复制进项目即使别的项目中出现的jar,也须要再......