docker搭建maven私服(nexus3),整合springboot上传下载依赖

一、前言

我们在JavaWeb开发中必不可少的就是jar包管理-maven,在没有maven之前,都是自己手动下载jar包导入到项目中,非常的繁琐。

maven出现之后,又迎来新的问题,对于仓库里人家发布的都可以引用下载,但是公司自己内部写的jar包,不想让外人看到,自己公司来回粘贴复制,非常的繁琐,版本维护起来也是十分头疼!

这时Nexus Repository出现了,现在主流的还是nexus3,所以今天小编带大家一起搭建使用一下。当然公司也必须有一个自己的私服,来存放公司的技术沉淀,提高开发效率!

网上教程看了很多,但是基本都是教怎么上传到私服,从私服拉取依赖就没有写!

本文从上传到拉去面面俱到,对你有帮助,一键三连哈!!

二、介绍

官网地址

nexus3是一种特殊的远程仓库,一般部署在公司服务器或者局域网内的仓库服务,私服代理广域网上的远程仓库,供公司的Maven用户使用。

当Maven依赖需要依赖的时候,它从私服请求,如果私服上不存在依赖,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。

我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

总的准则:无论私服有没有,我们本地都是使用私服提供的!

三、优点

  • 引入速度提高
  • 加速Maven构建
  • 方便管理
  • 稳定性高
  • 降低中央仓库的负荷
  • 隐私性高

四、docker构建运行

1. 创建挂载目录

mkdir /mydata/nexus/nexus-data -p

给权限:

chmod 777 /mydata/nexus/nexus-data/

2. 启动nexus

docker run -d -p 8081:8081 --name nexus -v /mydata/nexus/nexus-data:/nexus-data sonatype/nexus3

3. 获取密码

我们看到密码可以在容器内获取:

默认用户是,唯一生成的密码可以在卷内的文件中找到。有关卷的信息,请参阅持久数据。
admin admin.password

由于我们挂载了数据文件,主要在宿主机上查看即可!

切换到目录:

cd /mydata/nexus/nexus-data/

查看密码:

cat admin.password

密码:206d5b6b-cc58-403f-af03-e5c8772a803a

在这里插入图片描述

3. 访问页面

ip+端口访问:http://192.168.239.132:8081/

在这里插入图片描述

4. 登录

用户:admin
密码:挂载目录下的admin.password文件内

在这里插入图片描述

五、nexus配置和解释

1. 继续初始化

在这里插入图片描述

2. 编写新密码

在这里插入图片描述

3. 配置匿名访问

由于匿名访问有安全性问题,在公司不是还是禁用为好!

在这里插入图片描述

4. 完成

在这里插入图片描述

5. 仓库名称类型

在这里插入图片描述

我们可以看到有三种类型:

仓库类型说明
proxy代理到远程仓库,默认国外,可以修改为国内阿里云代理
group存放:通过 Nexus 获取的第三方 jar 包
hosted存放:本团队其他开发人员部署到 Nexus 的 jar 包

还有一些仓库名称:

仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的组仓库
maven-releasseNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 releasse 版本(生产版本)
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 snapshots 版本(测试版本)

6. 调整代理地址

点击maven-central进入详情:

把代理地址换为阿里云的:
https://maven.aliyun.com/repository/public

往下滑到最后点击保存!

在这里插入图片描述

7. 新建用户和仓库

关于很多教程都是新建用户和仓库,小编这里就使用admin和自带的仓库了!
一般的小公司够了,公司有一定规模在新建吧!!

六、settings.xml配置

1. 配置maven上传信息

我们打开本地的settings.xml文件,把私服的地址和用户配置上去!

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

2. 配置从私服下载

 <profiles>
    <profile>
        <id>nexus-own</id>
        <!-- 远程仓库列表 -->
        <repositories>
            <repository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <!-- 虚拟的URL形式,指向镜像的URL-->
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <layout>default</layout>
                <!-- 表示可以从这个仓库下载releases版本的构件-->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
            <repository>
                <id>maven-snapshots</id>
                <name>Nexus Central</name>
                <!-- 虚拟的URL形式,指向镜像的URL-->
                <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
                <layout>default</layout>
                <!-- 表示可以从这个仓库下载snapshot版本的构件 -->
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <!--需要激活 <profile>中的ID才生效-->
    <activeProfile>nexus-own</activeProfile>
</activeProfiles> 

七、springboot项目配置

1. 父项目pom文件

	<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <layers>
                            <enabled>true</enabled>
                        </layers>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <parameters>true</parameters>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!--打包上传maven私服-->
    <distributionManagement>
        <repository>
            <!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致-->
            <id>maven-releases</id>
            <!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库-->
            <url>http://192.168.239.132:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

2. deploy上传私服

双击deploy,上传私服!
在这里插入图片描述

3. 私服查看

在这里插入图片描述
一共上传了两次,都在私服中存在!

在这里插入图片描述

4. 私服依赖在本地引用

我们新建一个springboot项目,然后引入依赖:

要勾选Projects下面的配置,不然无法引入依赖!

在这里插入图片描述

5. 测试使用

新项目可以使用依赖中的注解:
在这里插入图片描述

八、总结

经过半天的测试加编写,终于完成,对于私服有了更深的认识!

私服是每个公司必须要有的,当然也是我们必须要掌握的,小编整理出来,方便大家学习!

优点前面都说了,这里就不多说了!


前人种树后人乘凉嘛,对你有帮助,还请不要吝啬你的发财小手点点关注哈!

关注小编的微信公众号,一起交流学习!文章首发看哦!

  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
当然可以,以下是详细的步骤: 1. 安装dockerdocker-compose 在CentOS上安装DockerDocker Compose,可以使用以下命令: ``` sudo yum update -y sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker sudo systemctl status docker ``` Docker Compose是Docker的一个插件,需要单独安装: ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version ``` 2. 创建工作目录 在你选择的目录里创建一个名为`elk`的目录,并进入该目录。 ``` mkdir elk && cd elk ``` 在该目录中新建以下文件夹 ``` mkdir -p logs/elasticsearch config/elasticsearch logs/kibana logs/logstash plugin ``` 3. 创建elasticsearch docker compose 在`elk`目录下,创建一个名为`docker-compose.yml`的文件,并加入以下内容: ```yml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" volumes: - ./logs/elasticsearch:/usr/share/elasticsearch/logs - ./config/elasticsearch:/usr/share/elasticsearch/config ports: - 9200:9200 - 9300:9300 networks: - elk networks: elk: ``` 说明: - `elasticsearch`是容器名称,可以根据实际情况调整 - `discovery.type=single-node`表示只有一个节点 - `xpack.security.enabled=false`表示不启用安全模式 - `ES_JAVA_OPTS=-Xms512m -Xmx512m`表示分配512MB内存给Elasticsearch容器 - `./logs/elasticsearch:/usr/share/elasticsearch/logs`表示将本地的`logs/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/logs`目录 - `./config/elasticsearch:/usr/share/elasticsearch/config`表示将本地的`config/elasticsearch`目录映射到Elasticsearch容器内的`/usr/share/elasticsearch/config`目录 - `9200:9200`和`9300:9300`表示将容器内的9200和9300端口映射到宿主机上,方便通过浏览器访问 4. 创建kibana docker compose 在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容: ```yml version: '3' services: elasticsearch: ... networks: - elk kibana: image: docker.elastic.co/kibana/kibana:7.14.0 container_name: kibana environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 volumes: - ./logs/kibana:/usr/share/kibana/logs ports: - 5601:5601 depends_on: - elasticsearch networks: - elk networks: elk: ``` 说明: - `kibana`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch` - `ELASTICSEARCH_HOSTS=http://elasticsearch:9200`表示连接到Elasticsearch容器的9200端口 - `5601:5601`表示将容器内的5601端口映射到宿主机上,方便通过浏览器访问 5. 创建logstash docker compose 在`elk`目录下,继续编辑`docker-compose.yml`,添加以下内容: ```yml version: '3' services: elasticsearch: ... networks: - elk kibana: ... networks: - elk logstash: image: docker.elastic.co/logstash/logstash:7.14.0 container_name: logstash volumes: - ./plugin:/usr/share/logstash/plugins command: logstash -f /usr/share/logstash/pipeline/logstash.conf ports: - 5044:5044 - 5000:5000 depends_on: - elasticsearch networks: - elk networks: elk: ``` 说明: - `logstash`服务依赖于`elasticsearch`服务,必须要先启动`elasticsearch` - `./plugin:/usr/share/logstash/plugins`表示将本地的`plugin`目录映射到Logstash容器内的`/usr/share/logstash/plugins`目录 - `command: logstash -f /usr/share/logstash/pipeline/logstash.conf`表示运行`/usr/share/logstash/pipeline/logstash.conf`文件中的配置 - `5044:5044`和`5000:5000`表示将容器内的5044和5000端口映射到宿主机上,方便和应用程序交互 6. 配置logstash 在`elk`目录下,创建`logstash/pipeline`目录,并在其中新建名为`logstash.conf`的文件,并加入以下内容: ```conf input { tcp{ port => 5000 type => "spring-boot" } udp { port => 5000 type => "spring-boot" } } filter { if [type] == "spring-boot" { grok { match => { "message" => "%{TIMESTAMP_ISO8601:logtime} %{LOGLEVEL:loglevel} --- \[%{DATA:thread}\] %{DATA:class}.%{DATA:method} : %{GREEDYDATA:message}" } } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "spring-boot-%{+YYYY.MM.dd}" } } ``` 说明: - `input`表示输入流设置,这里使用了TCP或UDP协议,监听5000端口 - `filter`表示过滤流设置,grok插件用来解析正则表达式。这里用正则表达式解析Spring Boot应用程序产生的日志文件 - `output`表示输出流设置,将过滤后的日志数据输出到Elasticsearch中 7. 使用Docker Compose启动服务 在`elk`目录下,运行以下命令启动服务: ``` docker-compose up -d ``` 等待一些时间后,整个`ELK`服务就启动了。 8. 测试 启动所有容器后,让Spring Boot应用程序将日志发送到端口5000 打开浏览器,输入`http://你的ip:5601/app/discover`访问Kibana应用程序。在Kibana应用程序中,创建索引,并在Discover页面中查看项目的日志信息。 现在,您已经成功地使用Docker Compose在CentOS上搭建了一个Spring Boot整合的ELK。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掉发的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值