【Docker】Docker安装部署maven私服

news/2024/6/3 19:22:48 标签: docker, maven, 容器

文章目录

  • 镜像拉取
  • 构建nexus实例
  • 登录maven私服
    • 如何查看实例初始化的admin密码呢?
      • 1.查看容器挂载卷
      • 2.找到nexus_nexus_data查看挂载卷详情
      • 3.查看admin账号密码
      • 4.登录并重置密码
  • 使用nexus私服
    • 1.设置settings.xml
    • 2.设置idea pom
  • 出现的问题
  • 小插曲

镜像拉取

docker pull sonatype/nexus3

在这里插入图片描述

构建nexus实例

version: '3'

services:
  nexus:
    image: sonatype/nexus3  # 使用的 Nexus 镜像
    ports:
      - "8081:8081"  # 将容器的 8081 端口映射到宿主机的 8081 端口
    volumes:
      - nexus_data:/nexus-data  # 挂载数据卷,用于持久化 Nexus 数据
    restart: always  # 容器停止后自动重启
    networks:
      - my_network  # 加入自定义网络

networks:
  my_network:  # 自定义网络配置

volumes:
  nexus_data:  # 定义数据卷
    driver: local  # 使用本地驱动,数据存储在本地


docker run -d -p 8081:8081 --name nexus --privileged=true -v /root/nexus-data:/nexus-data --restart=always sonatype/nexus3 

maven_38">登录maven私服

关闭防火墙,访问http://ip:8107
Maven私服启动容器稍微比较慢,等待一会即可。

注:账号为admin,密码在映射数据集下 admin.password文件里面

在这里插入图片描述

此案例使用docker-compose 创建实例

如何查看实例初始化的admin密码呢?

1.查看容器挂载卷

docker volume ls

在这里插入图片描述

2.找到nexus_nexus_data查看挂载卷详情

docker volume inspect nexus_nexus_data

在这里插入图片描述

3.查看admin账号密码

在这里插入图片描述

4.登录并重置密码

在这里插入图片描述

使用nexus私服

1.设置settings.xml

<servers>
   <server>
        <id>maven-releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>maven-snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

在这里插入图片描述

2.设置idea pom

<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE -->
    <!--指定仓库地址 -->
    <distributionManagement>
        <repository>
            <!--此名称要和.m2/settings.xml中设置的ID一致 -->
            <id>maven-releases</id>
            <!--上传的位置-->
            <url>http://192.168.33.101:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <!--此名称要和.m2/settings.xml中设置的ID一致 -->
            <id>maven-snapshots</id>
            <!--上传的位置-->
            <url>http://192.168.33.101:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <build>
        <plugins>
            <!-- 将源码打包插件 -->
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- deploy时只上传jar包到远程仓库的配置 -->
            <!--发布代码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>
    </build>

打包编译成功(下面打的是一个 稳定版jar包)

在这里插入图片描述

nexus 私服

在这里插入图片描述

打包编译成功(下面打的是一个 快照jar包)

在这里插入图片描述

出现的问题

问题1:Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

  • 大概率是settings.xml 和 pom 设置不对(主要)
  • maven 版本过低 推荐3.6.3
  • nexus 仓库发布策略更改为Allow redeploy

在这里插入图片描述

小插曲

1. idea 怎么打稳定版本和快照版本?

在Nexus仓库中,一个仓库一般分为public(RELEASE)仓和SNAPSHOT仓,前者存放正式版本,后者存放快照版本。如果在项目配置文件中(无论是build.gradle还是pom.xml)指定的版本号带有-SNAPSHOT后缀,比如版本号为laowang-2.0-SNAPSHOT,那么打出的包就是一个快照版本。

2. 为什么快照版本 后面带了一堆数字?

Maven 中的快照版本是一种特殊的版本,用于代表正在开发中的项目版本。在快照版本号后面的数字通常是一个时间戳或者一个递增的构建号

快照版本的命名约定通常遵循以下格式:<version>-SNAPSHOT。其中,<version> 是项目的基础版本号,而 -SNAPSHOT 则表示这是一个快照版本。在实际使用中,Maven 会将快照版本视为动态版本,它会定期检查仓库以获取最新的快照构建。

在快照版本号后面的数字通常是一个时间戳,用于标识构建的时间或者一个递增的构建号,用于表示每个快照构建的唯一性。这些数字有助于区分不同时间点或不同构建中的快照版本。

举例来说,一个快照版本号可能是 1.0-SNAPSHOT,而后面的数字可能会是类似于 20231218-1345(表示日期和时间)或者类似于 42(表示递增的构建号)这样的格式。这些数字会随着每次快照构建而变化,确保每个快照版本在仓库中都是唯一的。


http://www.niftyadmin.cn/n/5273687.html

相关文章

视觉增强RTK论文(1)—— GNSS-Stereo-Inertial SLAM for Arable Farming

文章目录 摘要方法标记ORB-SLAM3GNSS-Stereo-Inertial融合实验结果代码摘要 农业任务自动化速度的加快要求现场机器人采用高精度和鲁棒的定位系统。同时定位和映射(SLAM)方法不可避免地会在探索性轨迹上积累漂移,并且主要依赖于位置重新访问和循环闭合来保持一个有界的全局…

ubunutu 终端如何停止快速打印的输出以及恢复命令

在 Ubuntu 中,如果你想暂时停止终端中的输出,并在之后恢复输出,可以使用以下键盘快捷键: 停止输出: 使用 Ctrl + S 来暂时停止当前终端的输出。这在查看长输出时特别有用,比如当你运行一个命令产生大量输出,并且你想暂停来阅读当前屏幕上的内容。恢复输出: 当输出被暂停后…

sqlserver dba日常操作

文章目录 查询慢sql的方法sqlserver备份全备差异备日志备ldf备份事务备份 注意事项SQL Server 还原全备还原差异备份还原日志备/尾日志还原事务日志还原备份还原中的问题还原失败&#xff0c;需要某些权限重命名sql Server数据库名称失败 作业迁移单个迁移批量迁移 登陆账号迁移…

fetch: 一文理解fetch如何发请求

目录 第一章 前言 1.1 注意 1.2 为什么要了解fetch 第二章 准备工作 第三章 fetch相关知识 3.1 fetch基本请求发送(包括理解、解决fetch涉及的问题) 3.1.1 使用fetch发送get请求&#xff08;使用try-catch搭配async-await&#xff09; 3.1.2 了解Response对象 3.1.3 fe…

python+selenium+HTMLTestRunner生成测试报告并发送邮件给指定邮箱

配置邮件发送人及接收人&#xff0c;并执行测试用例&#xff0c;最后发送测试报告到指定邮箱&#xff08;注意&#xff1a;打开测试报告目录后&#xff0c;最后记得关闭&#xff0c;不然邮箱接收到的测试报告内容将会为空&#xff09; import time import unittest import os …

【力扣100】146.LRU缓存

添加链接描述 class DLinkedNode:def __init__(self, key0, value0):self.key keyself.value valueself.prev Noneself.next Noneclass LRUCache:def __init__(self, capacity: int):self.cache dict()# 使用伪头部和伪尾部节点 self.head DLinkedNode()self.tail D…

Vue--第十天

终极实战----大事件项目 1.简介&#xff1a; 2.创建项目&#xff1a; 1.创建&#xff08;159-163&#xff09;&#xff1a; 还是对着视频操作吧 2.路由&#xff1a; 3.element Plus: 导入element Plus 后不需要再导入插件配置&#xff0c;就连组件导入也不用 4.pinia构建用…

Qt之图像处理

QPainter 绘制基本图形的类 一次性填充绘制 QVector<QPoint> drawPointsGray;//存储灰色的点 //...将所有要画灰色的点加入该数组中 painter.setPen(Qt::gray);//设置颜色 painter.drawPoints(drawPointsGray.data(), drawPointsGray.size());//测试 QImage 根据地址…