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仓库的更多相关文章

  1. 使用Jenkins自带功能(不用shell)构建Docker镜像并推送到远程仓库

    意义: 一开始实现这个目的是在Jenkins中使用的shell脚本,也就是如下的这个: bash # 进入到生成jar包的根目录 cd ${WORKSPACE}/${module_filename} ...

  2. 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 ...

  3. Kunbernetes从私有仓库nexus拉取镜像

    1.docker登陆认证 [root@master ~]# vim /etc/docker/daemon.json { "insecure-registries": [" ...

  4. jenkins自动拉取git分支构建项目

    一,创建jenkins项目 new item ->freestyle project, 自定义一个项目名称 二,配置项目 1,Source Code Management 选择 git,输入gi ...

  5. eclipse git拉取完代码后怎么maven构建

    这个参考下:https://jingyan.baidu.com/article/414eccf64d29bc6b431f0ade.html 没试过上面的,反正git后的文件夹非空,用maven创建会失 ...

  6. 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库

    1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...

  7. git中如何切换分支,拉取分支,合并分支

    idea中如何使用git来做分支的切换合并: https://blog.csdn.net/autfish/article/details/52513465 本地分支与远程分支: https://seg ...

  8. Jenkins把GitHub项目做成Docker镜像

    本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...

  9. 使用Jenkins pipeline流水线构建docker镜像和发布

    新建一个pipeline job 选择Pipeline任务,然后进入配置页面. 对于Pipeline, Definition选择 "Pipeline script from SCM" ...

随机推荐

  1. 常用类-Instant、DateTimeFormatter类的使用

    一.Instant 我们所处的时间点是在东八区,Java中Instant所计算出来的时间是按本初子午线的时间来算的,与我们的时间相差8个小时,也就是说当我的北京时间是上午九点时,本初子午线的时间是凌晨 ...

  2. Markdown扩展语法

    目录 Markdown 语法补充 一.快速生成 HTML 表格代码 在线表格编辑器--TablesGenerator 二. 插入视频.音频或GIF 1. 视频 2. 音频 方法一 方法二 方法三 3. ...

  3. 抢先体验! 在浏览器里写 Flutter 是一种什么体验?

    Invertase 是一间位于英国的开源软件制作公司.主要构建关于开发者工具.SDK 等应用程序,早在 Flutter 2.2 的时候,Invertase 团队就开始帮助构建和贡献 Firebase ...

  4. 通过jmeter压测surging

    前言 surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针对于网关的访问, 相对于功能,可能大家更想知道能承受多 ...

  5. 阻塞赋值-非阻塞赋值(LUT,FDC,BUF...)

    一.看RTL级综合网络 1.1 FDC FDPE FDRE FDSE均是XILINX FPGA片上资源中四种不同的触发器,具体功能可直接百度 1.2 LUT是实现组合逻辑功能的一张真值表,根据输入值直 ...

  6. 如何在CentOS上找出逐渐耗尽磁盘空间的目录和文件

    起因 随着系统运行,CentOS空间不断减少,对此非常焦虑,到底磁盘空间被哪些新增文件占用了呢? 分析过程,主要使用du命令,逐层找出消耗空间的目录 1.在根目录下检索一下文件的占用情况,执行du命令 ...

  7. [javaweb]javaweb中HttpServletResponse实现文件下载,验证码和请求重定向功能

    HttpServletResponse web服务器接受到客户端的http请求之后,针对这个请求,分别创建一个代表请求的httpServletRequest和代表响应的HttpServletRespo ...

  8. linux nginx搭建与使用

    安装nginx yum -y install nginx 测试是否安装正确: nginx -t 打印如下: nginx: the configuration file /etc/nginx/nginx ...

  9. 20170622日行一记之PHP函数

    fread() 函数读取文件(可安全用于二进制文件) fread(file,length) 参数 描述 file 必需.规定要读取打开文件. length 必需.规定要读取的最大字节数. 该函数在读取 ...

  10. C#/VB.NET 将PDF转为PDF/X-1a:2001

    PDF/X-1a是一种PDF文件规范标准,在制作.使用PDF以及印刷时所需要遵循的技术条件,属于PDF/X-1标准下的一个子标准. PDF/X-1标准有由CGATS于1999年制定的PDF/X-1:1 ...