【Docker】Docker安装部署maven私服

文章目录

镜像拉取

复制代码
docker pull sonatype/nexus3

构建nexus实例

  • docker-compose up -d
yaml 复制代码
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

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

登录maven私服

关闭防火墙,访问http://ip:8107

Maven私服启动容器稍微比较慢,等待一会即可。

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

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

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

1.查看容器挂载卷

shell 复制代码
docker volume ls

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

shell 复制代码
docker volume inspect nexus_nexus_data

3.查看admin账号密码

4.登录并重置密码

使用nexus私服

1.设置settings.xml

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

xml 复制代码
<!--注意限定版本一定为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(表示递增的构建号)这样的格式。这些数字会随着每次快照构建而变化,确保每个快照版本在仓库中都是唯一的。

相关推荐
CAFEBABE 343 小时前
linux离线安装docker并启动
linux·docker·eureka
yuguo.im5 小时前
Docker 两大基石:Namespace 和 Cgroups
运维·docker·容器
会飞的土拨鼠呀5 小时前
docker部署 outline(栗子云笔记)
笔记·docker·容器
Jelly-小丑鱼6 小时前
Linux搭建syslog日志服务器
linux·服务器·docker·日志服务器·syslog服务器
没有bug.的程序员7 小时前
高频IO服务优化实战指南
java·jvm·spring·容器
lisanmengmeng8 小时前
docker 方式安装部署禅道zentao(五)
运维·docker·容器
程序员老赵8 小时前
AdguardHome Docker 容器化部署指南
docker·dns
露临霜9 小时前
Docker安装nginx
nginx·docker·容器
CAFEBABE 3412 小时前
安装完docker之后怎么使用
运维·docker·容器
测试人社区—小叶子12 小时前
测试开发面试高频“灵魂八问”深度解析与应答策略
网络·人工智能·测试工具·云原生·容器·面试·职场和发展