使用gitlab+jenkins+nexus拉取springcloud并根据不同模块构建docker镜像,并推送到nexus里的docker仓库
1.安装gitlab
详情看:https://www.cnblogs.com/sanduzxcvbnm/p/13023373.html
安装好gitlab后,然后创建一个普通用户,编辑用户,给用户设置密码,添加本机ssh密钥到gitlab里,使用普通用户上传代码

要使用git开头的地址,不使用http开头的地址

可以先把原有的远程仓库名称修改成old_origin,然后添加这个新的远程仓库

2.安装jenkins
详情看:https://www.cnblogs.com/sanduzxcvbnm/p/11341622.html
修改清华大学jenkis地址,更新到最新版本,安装一些插件:docker,gitlab,maven相关的
清华大学jenkis地址,插件管理-高级
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3.安装nexus
详情看:
(1)安装:https://www.cnblogs.com/sanduzxcvbnm/p/13098712.html
(2)配置docker镜像仓库:https://www.cnblogs.com/sanduzxcvbnm/p/13099635.html
4.配置jenkins
(1)新建item
输入名称,选择第一个选项:自由风格,提交
(2)配置

(3)配置gitlab拉取代码

(4)配置maven编译打包

(5)配置docker
docker开启远程访问:
# vim /lib/systemd/system/docker.service
# 在ExecStar开头的这一行中添加上 -H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
或者是:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
systemctl daemon-reload
systemctl restart docker
jenkins->配置->cloud



(6)项目结构

(7)springcloud项目修改
在模块的根目录下创建一个Dockerfile文件,并且复制粘贴上启动用的shell脚本(可以使用原来的,不过需要修改,去掉开头的nohup,java命令使用相对路径和最后的&)


不过这样会有个问题,生成的日志是在容器中,只能登陆到容器中才能查看日志,无法通过使用命令docker logs 进行查看
docker logs只能记录输出到终端的内容(stdout或者stderr),输出到文件的无法显示
(8)把容器中生成的日志文件挂载到宿主机上,方便统一管理
这里采用的是挂载数据卷的方式,不能采用挂载宿主机目录的方式(会报要执行的shell脚本文件找不到的错误)
# 挂在宿主机目录的方式,---不可行-----
[root@worker ~]# docker run -d -p 8761:8761 -v /var/log/eureka:/opt/hkd-cloud/hkd-eureka idocker.io/hkd-eureka:1.1
b2ccb868d4a8abc02999a0cdcec42268ab353fd8d8a0ae4b577ebf05795e1a41
[root@worker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@worker ~]# docker logs -f b2ccb868d4a8abc02999a0cdcec42268ab353fd8d8a0ae4b577ebf05795e1a41
/bin/sh: can't open 'hkd-eureka.sh': No such file or directory
[root@worker ~]# docker volume create my-vol # 创建数据卷,默认路径:/var/lib/docker/volumes
[root@worker ~]# docker run -d -p 8761:8761 --mount source=my-vol,target=/opt/hkd-cloud/hkd-eureka idocker.io/hkd-eureka:1.1 # 可以挂载成只读的文件,ro
d113c6d2db8ef5622e67cc612f2b106cfd3c9f050e83f935e35d4910f3d9c46b
[root@worker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d113c6d2db8e idocker.io/hkd-eureka:1.1 "/bin/sh hkd-eureka.…" 4 seconds ago Up 3 seconds 0.0.0.0:8761->8761/tcp charming_lamarr
[root@worker volumes]# pwd
/var/lib/docker/volumes
[root@worker volumes]# cd my-vol/
[root@worker my-vol]# ls
_data
[root@worker my-vol]# cd _data/
[root@worker _data]# ls
hkd-eureka-1.0.jar hkd-eureka.out hkd-eureka.sh
思考:
可以这样处理:Dockerfile文件中VOLUME挂载到logs目录,同时shell脚本中输出日志到这个logs目录中,运行容器挂载的时候这个目录采用只读的方式

docker run -d -p 8761:8761 -v my-vol:/opt/hkd-cloud/hkd-eureka/logs idocker.io/hkd-eureka:1.1
这样一来,既能实现共享容器中的日志到宿主机,也增加了安全性
使用gitlab+jenkins+nexus拉取springcloud并根据不同模块构建docker镜像,并推送到nexus里的docker仓库的更多相关文章
- 使用Jenkins自带功能(不用shell)构建Docker镜像并推送到远程仓库
意义: 一开始实现这个目的是在Jenkins中使用的shell脚本,也就是如下的这个: bash # 进入到生成jar包的根目录 cd ${WORKSPACE}/${module_filename} ...
- k8s Gitlab CI/CD 之自动编译Docker镜像并推送到指定的Registry
环境介绍: 说明 节点 ip 系统 Gitlab Server git.ds.com 10.0.1.179 CentOS 7.5.1804 Gitlab Runner 10.0.1.178 Cen ...
- Kunbernetes从私有仓库nexus拉取镜像
1.docker登陆认证 [root@master ~]# vim /etc/docker/daemon.json { "insecure-registries": [" ...
- jenkins自动拉取git分支构建项目
一,创建jenkins项目 new item ->freestyle project, 自定义一个项目名称 二,配置项目 1,Source Code Management 选择 git,输入gi ...
- eclipse git拉取完代码后怎么maven构建
这个参考下:https://jingyan.baidu.com/article/414eccf64d29bc6b431f0ade.html 没试过上面的,反正git后的文件夹非空,用maven创建会失 ...
- 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库
1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...
- git中如何切换分支,拉取分支,合并分支
idea中如何使用git来做分支的切换合并: https://blog.csdn.net/autfish/article/details/52513465 本地分支与远程分支: https://seg ...
- Jenkins把GitHub项目做成Docker镜像
本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...
- 使用Jenkins pipeline流水线构建docker镜像和发布
新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...
随机推荐
- SpringBoot:Redis中的zset
zset被描述为有序集合,但RedisTemplate的OpsForZSet().range方法的返回值是set,那么: 这样直接查询zset返回set的操作会使得元素失去顺序吗? 先明确:Set是什 ...
- Webpack干货系列 | 怎么运用 Webpack 5 处理css/scss/sass、less、stylus样式资源
程序员优雅哥简介:十年程序员,呆过央企外企私企,做过前端后端架构.分享vue.Java等前后端技术和架构. 本文摘要:主要讲解webpack 5 如何高效处理CSS 资源.scss/sass 资源.l ...
- 图论学习笔记·$Floyd$ $Warshall$
对于图论--虽然本蒟蒻也才入门--于是有了这篇学习笔记\(qwq\) 一般我们对于最短路的处理,本蒟蒻之前都是通过构建二维数组的方式然后对每两个点进行1次深度或者广度优先搜索,即一共进行\(n\)^2 ...
- 网格动物UVA1602
题目大意 输入n,w,h(1<=n<=10,1<=w,h<=n).求能放在w*h网格里的不同的n连块的个数(平移,旋转,翻转算一种) 首先,方法上有两个,一是打表,dfs构造连 ...
- 金瓯无缺江河一统|Win10系统基于Docker和Python3搭建并维护统一认证系统OpenLdap
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_180 OpenLdap(Lightweight Directory Access Protocol)是什么?它其实是一个开源的.具 ...
- 多环境配置 - SpringBoot 2.7.2 实战基础
优雅哥 SpringBoot 2.7.2 实战基础 - 06 -多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境 local.开发环境 dev.集成测试环境 test.用户接受测试环境 ...
- java的stream让我灵光一现
说实话,我是一个到了退役也没有搞明白C++的istream和ostream的. 刚开始的时候我把<iostream>直接拆解成ios和tream 真,果粉暴露 退役之后划水,倒是从java ...
- Luogu2343 宝石管理系统(平衡树)
平衡树维护总第K大:插入 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)
我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include <iostre ...
- 100行代码实现一个RISC-V架构下的多线程管理框架
1. 摘要 本文将基于RISC-V架构和qemu仿真器实现一个简单的多线程调度和管理框架, 旨在通过简单的代码阐明如何实现线程的上下文保存和切换, 线程的调度并非本文的重点, 故线程调度模块只是简单地 ...