包含dockernexus的词条

本篇文章给大家谈谈dockernexus,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

dockerdesktop连接自maven工程代码

已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来business-central是只可以有一个kie-server的远程服务器. 天生就不能集群部署,五来,搭建kie-server的集群是是不能使用 --link参数来指定对应的business-central的, 也就是说搭建的kie-server集群暂时不能指定business-central.

ok结论是 kie-server是三个node的集群, business-central不集群部署,只部署一台服务器. 而且business-central与kie-server不再进行连接. 也就是b 不指定kie-server远程服务器 . 现状暂时如此,以下是讲如此架构下的发布流程.

kie-server对外暴露了一个接口, 用于发布项目.

get请求

body:

每个node是有本地maven库的, 会根据请求的三个参数从maven本地库找到这个jar 然后部署成一个kie-server里的一个容器. 容器就是kie-server对外提供服务的一个服务器之下的一个最高的组织方式.

ok为了验证可用性 手动把jar分别放进每个node里 并分别执行cp命令将jar从服务器的临时目录copy到容器里maven本地库下的指定目录里

结果是确实发送了get命令后会部署成功. ok验证通过. 但问题也很明显. 发布过程过于手动化, 对于开发人员来说很容易造成误操作, 比如某个node遗漏了cp命令, 还有一个问题 更严重, 因为已经利用了swarm的特性 已经是负载均衡的了, 所以put请求到了哪个node是不确定的, 需要打开日志发送多次put请求 确保每个node都发布成功了. 这个操作很…很蠢

ok在上一步的基础上更进一步假设如果每个node都连接同一个远程maven库, 那就只需要将代码发布到这个远程库, 即可以达到让每个node都能接受到这个资源从而进行发布, 就不需要人工把jar copy到各个node了./opt/jboss/.m2/repository目录会自动建的, 下面有setting.xml配置文件 文件内容很有帮助,

首先setting.xml是maven的配置文件 配置了服务器在哪等等信息. 注释的大致意思是

KIE_MAVEN_REPO - Defaults to

KIE_MAVEN_REPO_USER - Defaults to admin

KIE_MAVEN_REPO_PASSWORD - Defaults to admin

文件使用环境变量来配置, 三个关绝激晌键的环并锋境变量如上.

也就是说我们创建 kie-server集群的时候如果指定了环境变量 也就可以给每个node指定他的maven服务器地址. 很nice

ok下一步要开一个maven远程服务器 ,并验证可以将本地代码install的jar报 deploy到远程maven服务器.

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

第一步利用docker创建一个maven服务器的容器. docker真是越用越好用.

然后 就可以看到maven的管理页面了, 需要密码

进入容器根目录, 下面有nexux-date目录, 里面原来有个admin.password的文件. 打开里面就是admin 的密码 .因为登录后改密铅指码之后这个默认密码的文件消失了, 所以截图里没有

主要是复制下这两个的url

然后本地pc打开 IDEA, 设置 maven /user serttings file override . 然后编辑本地的setttings.xml 全文如下:

?xml version="1.0" encoding="UTF-8"?

settings xmlns=""

xmlns:xsi=""

xsi:schemaLocation=" "

pluginGroups

/pluginGroups

proxies

/proxies

servers

server

idnexus-releases/id

usernameadmin/username

password9b1f9129-0b87-460c-9435-37a754198655/password

/server

server

idnexus-snapshots/id

usernameadmin/username

password9b1f9129-0b87-460c-9435-37a754198655/password

/server

/servers

mirrors

mirror

idmaven-default-http-blocker/id

mirrorOfexternal:http:*/mirrorOf

namePseudo repository to mirror external repositories initially using HTTP./name

url;/url

blockedtrue/blocked

/mirror

/mirrors

profiles

profile

idnexus/id

properties

altSnapshotDeploymentRepository

nexus-snapshots::default::

/altSnapshotDeploymentRepository

altReleaseDeploymentRepository

nexus-releases::default::

/altReleaseDeploymentRepository

/properties

/profile

/profiles

activeProfiles

activeProfilenexus/activeProfile

/activeProfiles

/settings

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

关键信息是server和两个url.

maven的配置好了, 然后是项目代码的配置,

对项目来说 ,因为项目用的maven 的配置文件里有了profile nexus, 所以在IDEA里打开项目可以看到profiles nexus是固定选中的

打开项目文件里的 pom.xml 顶级节点下添加如下代码

distributionManagement

!--正式版本--

repository

!-- 在settings.xml中server的id--

idnexus-releases/id

url;/url

/repository

!--快照版本--

snapshotRepository

idnexus-snapshots/id

url;/url

/snapshotRepository

/distributionManagement

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1

2

3

4

5

6

7

8

9

10

11

12

13

14

ok 这样项目在执行 maven deploy命令的时候就会把install的时候生成的jar发布到远程服务器.根据版本号是否是快照 决定发布到正式还是快照的repostitory, 效果如下

这时候就可以在maven的后台管理页面看到刚deploy的jar

ok至此maven服务器和发布流程已经验证通过, 结束.

下一步是kie-server在部署集群的时候设置环境变量, 让集群中的每个node都连上maven服务器.

还有个问题没有解决, 即put发布命令是被负载均衡了的, 怎么保证每个节点都能确保发布.可能要发布的时候指定一下网络,不用ingress 发布好了之后再改成ingress ? 这要考虑下, 不过还好问题不大

[img]

spring-boot 构建上传到nexus私服

需要准备

由于我们使用的时http而不是https 故需要在启动参数文件中设置

vi /etc/docker/daemon.json,将ip:8082和ip:8083 添加到 insecure-registries 参数中,由于我们的远程仓库地址为 ,不为https 故同样需要将该地址添加到insecure-registries参数中:"insecure-registries":["ip:8082","ip:8083"," "]

重启docker

systemctl daemon-reload

systemctl restart docker

docker login ip:8082

docker login ip:8083

在登录需要输入登录用户名及密码,即为你的nexus3的登录用户名及密码

验证proxy

docker pull ip:8083/redis

此docker私服仓库中时没有redis的镜像的,故nexus3会从中央仓库中去拉取山孙纤镜像,拉取成功之后,查看nexus3的proxy仓库发逗仿现已经存凯做在了redis镜像

验证hosted

tag镜像:docker tag nginx:latest ip:8082/nginx:latest

push 镜像:docker push ip:8082/nginx:latest

此时查看hosted仓库发现已经存nginx的镜像了

nexus 配置

NEXUS通过docker方式进行安装

settings.xml配置 

settings xmlns=""

          xmlns:xsi=""

          xsi:schemaLocation=" "

  localRepositoryrepository地址/localRepository

  mirrors

          mirror

              idaaa/id

              nameaaa/name

              mirrorOfaaa/mirrorOf

              url;/url

          /mirror

          !--此处需要排除掉rjyun--

          mirror

              idalimaven/id

              mirrorOf*,!aaa/mirrorOf 

              这里需要注李拍意 设置成*以后 会优先走这里 需要排除掉aaa 再设置成mirror 否则其他配置无效

              nameNexus aliyun/name

              url;/url

          /mirror

      /mirrors

    servers

   宽扰仔     server

            idaaa/id

 慎汪           usernameadmin/username

            passwordxxx/password

        /server

    /servers

    activeProfiles

        activeProfilenexus/activeProfile

    /activeProfiles

/settings

上传jar包 需要注意的是连pom.xml一起上传 并且后缀名设置为pom 否则可能会报错

pom.xml配置

repositories

  repository

      idrjyun/id

      namerjyun/name

      url;/url

  /repository

【nexus】Nexus Repository Manager 镜像清理的task设置

nexus3 docker私服在使用过程中,通过nexus3管理界面,删液颤除了一些镜像之后,其实底层的存储,并没有释放。耐世

注意:在删除多个目标后,你会发现,实际物理磁盘并没有释放出来,是因为在后台只是被标记为deletion,就好比你用delete语句删除MySQL中的条目时,磁盘空间不会释放出来一样。

Delete unused manifests and images

Compact blob store

定时清理docker私服镜像的方法

nexus3清理释放昌埋肢docker镜像的磁盘空间

nexus搭建docker镜像仓库

1 从docker拉取Nexus3镜像,这里使用的是3.30.0版本

2 创建nexus数据挂载目录

这里会宿主机目录权限问题,简单粗暴解决就是直接给我挂载的目录777权限,哈哈。要么就是在启动容器的时候给容器root权限。

3 运行nexus容器

接着重启docker 重启nexus就可以了。

等待了一段时间发现访问nexus还是没有起起来,通过 docker logs -f nexus3 看了一下日志,发现报错了,原因就是上面挂载了目录,目录的权限用户是root,nexus在容器内部中启动的时候是以nexus用户启动的,逗裤早uid 是200,操作系统root用户的uid是1000,所以必然没有写入权限,启动报错。可以通过启动时添加 --privileged=true 赋予root权限解决这个问题,但是给一个容器赋予一个root权限是有点不安全。网上有些博客通过 chown 200 -R /opt/nexus-data 我没试成功,只能先这么搞了。

PS:这里给了两个山雀端口,8081和8082,8081是nexus的默认端口,8082预留给docker私有仓库使用。

4 创建私有docker仓库

4.1 访问界面并登录

账号是admin,密码记录在挂载目录下的/admin.password文件里面,在登陆一波。

4.2 创建仓库

4.3 安全设置

4.4 测试

因为我们的仓库开放的是http的端口,而docker要纯橡求使用的是https,所以这里还要添加一下信任仓库。

再次登录成功了。

4.5 制作镜像并向私有仓库推送镜像

推送成功后到nexus页面查询我们是否推送成功。

可以看到已经看到了我们用于测试的nginx镜像了。

额外用一张图补充 docker tag 命令的用法

【nexus】关于nexus oss 的高可用

Sonatype当前不支持Nexus负载平衡,除非将Nexus实例绝芹中置并山于启用 智能代理 或通过 更新功能 的两个实例之前。

关于nexus作为docker镜像仓库的高可用设置,网上nexus+keepalived+rsync的方式挺扯的,官方开源版本默认又不支持高可用,那么通过nginx代理不失为一个办法,只是需要将镜像推两遍,每个仓库推一遍。

nexus01                           192.168.1.105

nexus02                   首模          192.168.1.106

nginx_vip                            192.168.1.108(nexus.example.com)

装有docker的客户端            192.168.1.107

在nexus01服务器上安装nexus,生成keystore.jks

# keytool \

-genkeypair \

-keystore keystore.jks \

-alias Test_nexus \

-keypass Nexus@123 \

-storepass Nexus@123 \

-keyalg RSA \

-keysize 2048 \

-validity 5000 \

-dname "CN=*.example.com,OU=Test,O=Test,L=ShenZhen,ST=GuangDong,C=CN" \

-ext "SAN=DNS: nexus.example.com ,IP:192.168.1.105"  \

-ext "BC=ca:true"

在nexus02服务器上安装nexus,生成keystore.jks

# keytool \

-genkeypair \

-keystore keystore.jks \

-alias Test_nexus \

-keypass Nexus@123 \

-storepass Nexus@123 \

-keyalg RSA \

-keysize 2048 \

-validity 5000 \

-dname "CN=*.example.com,OU=Test,O=Test,L=ShenZhen,ST=GuangDong,C=CN" \

-ext "SAN=DNS: nexus.example.com ,IP:192.168.1.106"  \

-ext "BC=ca:true"

# vim  /etc/hosts

#################################

192.168.1.108  nexus.example.com

#################################

关闭selinux

#  sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g'   /etc/selinux/config

# setenforce  0

nignx监听vip设置

# echo "1" /proc/sys/net/ipv4/ip_nonlocal_bind

# echo 'net.ipv4.ip_nonlocal_bind = 1' /etc/sysctl.conf

# sysctl -p

生成nginx自签名证书

# openssl req -x509 -nodes \

-days 3650 \

-newkey rsa:2048 \

-subj "/C=CN/ST=Guangdong Province/L=Shenzhen/O=Test/OU=Test/CN=nexus.example.com" \

-keyout /etc/nginx/ssl/nginx.key \

-out /etc/nginx/ssl/nginx.crt

#  yum  -y install  nginx

# vim  /etc/nginx/nginx.conf

#############################################

# For more information on configuration, see:

#   * Official English Documentation: 

#   * Official Russian Documentation: 

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

    worker_connections 1024;

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile                on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;

    client_max_body_size 500M;

    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.

# See 

    # for more information.

    include /etc/nginx/conf.d/*.conf;

 upstream nexus {

        server 192.168.1.105:10086 max_fails=1 fail_timeout=180s; 

        server 192.168.1.106:10086 max_fails=1 fail_timeout=180s; 

    }

  server {

        listen  192.168.1.108:10086  ssl;

        ssl_certificate      /etc/nginx/ssl/nginx.crt;

        ssl_certificate_key  /etc/nginx/ssl/nginx.key;

location / {

 proxy_pass   ;

        #Proxy Settings

        proxy_connect_timeout     3;

        proxy_send_timeout         90;

        proxy_read_timeout          90;

        proxy_set_header   Host                     $host;

        proxy_set_header   X-Real-IP              $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_redirect     off;

   }

    }

}

#############################################

根据  include /etc/nginx/conf.d/*.conf  我们也可以将nexus的代理配置写在自配置文件中:

#  vim  /etc/nginx/conf.d/nexus.conf

###################################################

upstream nexus {

        server 192.168.1.105:10086 max_fails=1 fail_timeout=180s; 

        server 192.168.1.106:10086 max_fails=1 fail_timeout=180s; 

    }

   server{

listen192.168.1.108:10086  ssl;

        ssl_certificate      /etc/nginx/ssl/nginx.crt;

        ssl_certificate_key  /etc/nginx/ssl/nginx.key;

location / {

proxy_pass   ;

        #Proxy Settings

        proxy_connect_timeout     3;

        proxy_send_timeout         90;

        proxy_read_timeout          90;

        proxy_set_header   Host                     $host;

        proxy_set_header   X-Real-IP              $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

        proxy_redirect     off;

   }

    }

###########################################################

# keytool -printcert -sslserver   nexus.example.com:2020    -rfc /etc/pki/ca-trust/source/anchors/nexus.crt

注:此处2020为创建的nexus的一个仓库端口

# cat  /etc/pki/ca-trust/source/anchors/nexus.crt

# update-ca-trust

# systemctl  restart docker

# docker login   nexus.example.com:2020   -u test  -p  "Test@123"

# cat /root/.docker/config.json

从输出可知,docker节点获取的就是nginx的公钥。

负载均衡Nexus工件存储库

High Availability Clustering (Legacy)

关于dockernexus和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表