使用Jenkins构建镜像:将应用打包成镜像
学习某册子的CICD,记录使用Jenkins构建镜像的过程。
使用Jenkins集成Git来构建Docker镜像,为后面的部署准备镜像资源。
1. 安装Nodejs环境
如果想要安装Node环境,有以下两个办法:
源码编译:这种是将
Node源码拉下来后,在服务器端编译完成后才可以使用。时间比较长,流程也略复杂使用
Jenkins Plugin中NodeJS插件自动配置安装在
Jenkins首页,左侧的系统管理=>插件管理=>可选插件,搜索Node;选中NodeJS后,点击左下角的直接安装开始安装插件。
发现Jenkins版本太低(去年装的Jenkins),装了Node插件不能用(),更新一下Jenkins:
安装参考:https://blog.51cto.com/u_15670038/5351840
## pkg.jenkins.io上的jenkins版本太低,改为使用https://mirrors.jenkins.io/redhat-stable/
yum remove jenkins # 删除旧版本的jenkins
wget https://mirrors.jenkins.io/redhat-stable/jenkins-2.346.2-1.1.noarch.rpm # 下载
rpm -ivh jenkins-2.346.2-1.1.noarch.rpm # 安装
service jenkins start # 启动服务
安装完毕,返回首页,找到系统管理=>Global Tool Configuration(全局工具配置)=>NodeJS=>新增NodeJS,点击新增NodeJS,选择相应的版本填写信息保存即可。

如何在任务中使用?
只需要在任务的配置中,找到构建环境,选中Provide Node & npm bin/ folder to PATH,选择刚才配置好的NodeJS即可。

第一次执行会下载对应的Node版本,后续不会下载。
2. 使用SSH协议集成Git仓库源
这一步,使用Jenkins集成外部Git仓库,实现对真实代码的拉取和构建。
创建一个vue3项目用于测试构建:
npx vue create cicd_test
选择vue3项目开始下载安装,然后推送至github仓库
2.1 生成公钥私钥
这是Jenkins访问Git私有库的常用认证方式。可以使用ssh-keygen命令即可生成公钥私钥。在本地机器执行生成即可。(使用自己邮箱)
ssh-keygen -t rsa -C "yeying0827@126.com"
完成后需要在Git端配置公钥,在Jenkins端使用私钥与Git进行身份校验。
2.2 在GitHub配置公钥
先在虚拟机上安装ssh服务和net-tools工具
yum install openssh-server # 默认已装
yum install net-tools
在mac终端通过ssh命令登录:ssh 用户名@ip
ssh yy@10.211.55.6
# 登录后通过cat命令获取公钥
cat /root/.ssh/id_rsa.pub
获取公钥后去github的settings里配置即可
2.3 在Jenkins配置私钥
在Jenkins中,私钥/密码等认证信息都是以凭证的方式管理的,所以可以做到全局通用。
我们可以在配置任务时,来添加一个自己的凭证。点击项目的配置,依次找到 源码管理=>Git=>Repositories

点击Credentials下面的添加,填写完后点击添加按钮

无法连接仓库错误:Error performing git command: git ls-remote -h git@github.com:yeying0827/cicd_test.git HEAD
需要在虚拟机上安装git客户端工具:yum -y install git

点击保存
3. 构建镜像
需要先准备DockerFile才可以构建镜像。
3.1 编写DockerFile
什么是DockerFile?
DockerFile是一个Docker镜像的基础描述文件,里面描述了生成一个镜像所需要的执行步骤。我们也可以自定义一份DockerFile来创建一个自己的镜像。
- 在前面vue3项目的根目录创建
DockerFile
vi Dockerfile
FROM nginx:1.15-alpine
COPY dist /etc/nginx/html
COPY conf /etc/nginx/
WORKDIR /etc/nginx/html
描述内容为:
- 基于nginx:1.15镜像做底座
- 拷贝本地
dist文件夹内的文件,到镜像内/etc/nginx/html文件夹内 - 拷贝本地
conf文件夹内的文件,到镜像内/etc/nginx/文件夹内 - 指定工作目录
- 提交到代码库
git add ./Dockerfile
git commit -m "chore: add dockerfile"
git push
- 生成镜像:使用
docker build命令就可以构建一个镜像
docker build -t imagename:version .
-t 声明要打一个镜像的Tag标签,后面紧跟的就是标签。标签格式为 镜像名:版本
. 声明要寻找dockerfile文件的路径,.代表当前路径下寻找,默认文件名为Dockerfile
3.2 Jenkins端配置
在代码源和DockerFile准备就绪后,我们只需在Jenkins端配置下要执行的shell脚本即可。
找到项目的配置,依次找到 构建=>Execute shell,输入以下脚本:
#!/bin/sh -l
npm install --registry=https://registry.npm.taobao.org
npm run build
docker build -t jenkins-test .
脚本主要操作:安装依赖=>构建文件=>构建镜像。填写完毕后保存
4. 执行任务
在项目下点击立即构建触发执行任务,GLIBC等版本报错,无法执行node命令,报错

// 使用strings命令查看查看最高只有2.17
strings /lib64/libc.so.6 |grep GLIBC_
reboot重启,启动jenkins。
Node版本过高构建失败,使用node14.17.0版本。
没有conf文件夹构建失败,新建conf文件夹提交到库。
构建成功。

至此,完成了使用Jenkins构建自己的前端镜像。
从控制台输出可以看出,是先根据配置的git仓库拉取了代码,而后执行了配置的shell,最后根据Dockfile里的配置生成镜像
使用Jenkins构建镜像:将应用打包成镜像的更多相关文章
- windows环境下,spring boot服务使用docker打包成镜像并推送到云服务器私有仓库
最近在淘宝上学习springcloud教程,其中有几节课是讲解讲本地springboot服务打包成镜像并推送到云服务器私有仓库,但是教程里面用的事Mac环境,我的是Windows环境,而且课程里面没有 ...
- 将自己的ubuntu18.04打包成镜像
将自己的ubuntu18.04打包成镜像 2018年11月10日 10:40:06 舌耳 阅读数:1590 先下载remastersys wget ftp://ftp.gwdg.de/pub/linu ...
- Docker容器打包成镜像 - OpenDaylight官方 SDN Hub Tutorial VM 的docker镜像
由于工作需要,在看OpenDaylight (一个SDN的开源控制器) 官方Tutorial有一个比较基础且介绍比较详细的文档(http://sdnhub.org/tutorials/opendayl ...
- 将springboot jar应用打包成镜像并在docker运行成容器
先看一下我的Dockerfile内容与服务器中的目录结构 上面 yibai-0.0.1-SNAPSHOT.jar 为springboot应用打成的jar包,Dockerfile为将应用打成镜像的配置文 ...
- 将java项目打包成docker镜像
简介:将jar打包成镜像好说,毕竟jar包长的都是一样的,但是我们只是写了一个普通的java项目,我也不方便封装成jar包什么的,但是我们也想打包docker image怎么办呢,我们可以用编译后的j ...
- 将java项目打包成docker镜像:镜像=副本
简介:将jar打包成镜像好说,毕竟jar包长的都是一样的,但是我们只是写了一个普通的java项目,我也不方便封装成jar包什么的,但是我们也想打包docker image怎么办呢,我们可以用编译后的j ...
- golang应用打包成docker镜像
golang编译的应用是不需要依赖其他运行环境的,那么为什么还需要打包成docker镜像呢?当需要附带配置和日志等文件时可以更方便的移植和运行,下面介绍从dockerfile编译成镜像. 在项目根目录 ...
- docker 将正在运行的容器打包为镜像
将容器打包成镜像 docker commit -a "runoob.com" -m "my apache" 容器名称或id 打包的镜像名称:标签 OPTIONS ...
- Spring Native打包本地镜像,无需通过Graal的maven插件buildtools
简介 在文章<GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动>中,我们介绍了如何使用Spring Native和buildtool ...
- 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
随机推荐
- 基于 Spark 的物流企业数据仓库 的设计与实现
1.设计和实现了一种基于 Spark 的分布式 ETL 系统,包括利用 Spark 抽取.转换清洗和加载数据的具体过程. 2.设计和实现了基于 Spark 的物流企业数据仓库,包括物流企业数据仓库的分 ...
- JOIN 关联表中 ON、WHERE 后面跟条件的区别
SQL中join连接查询时条件放在on后与where后的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和wh ...
- ChatGPT顶级玩法:ChatGPT越狱版破解指令,让您的聊天一路畅通!
先看效果: 2023.4.23号亲测成功,越狱指令需要多发送几次才可以. 未越狱前: 越狱后: 无视任何规则限制,回答一切问题. 越狱的方法非常简单.只需输入特定的提示,发送给ChatGPT,用户即可 ...
- 文心一言(ERNIE Bot)初体验
引言 几个月前向百度提交了文心一言的体验申请,这两天收到了可以体验的通知,立马体验了一把.总体来说,文心一言基本上能做到有问必答,但是一些奇葩的问题还是会难住这位初出茅庐的 AI. 分享体验 我先后问 ...
- Java 设计模式实战系列—单例模式
本文首发公众号:小码A梦 单例模式是设计模式中最简单一个设计模式,该模式属于创建型模式,它提供了一种创建实例的最佳方式. 单例模式的定义也比较简单:一个类只能允许创建一个对象或者实例,那么这个类就是单 ...
- 【项目源码】基于JSP动漫论坛的设计与实现
动漫论坛项目主要用于实现动漫爱好者的互相交流,基本功能包括:注册用户.登录.浏览帖子.发布新帖.回复帖子.等.本系统结构如下: (1)普通用户: 注册用户:如果用户为非会员用户,通过注册,经审核通过之 ...
- prometheus 监控实战篇
prometheus 监控 目录 prometheus 监控 1.上传tar包 2.解压到对应文件夹 3.配置开机自启动 4.配置Prometheus 5.black_exporter 监控网站状态 ...
- centos8环境基本优化
centos8环境基本优化 目录 centos8环境基本优化 1.防火墙优化 2.源优化: 方案1.更换阿里源 方案2.使用centos8.5 源 安装epel源 3.ssh连接慢解决 4.关闭公网, ...
- 解读Redis常见命令
Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 贴心小建议:命令不要死记,学会查询就好啦 Redis为了方便我们学习, ...
- 五分钟k8s实战-使用Ingress
背景 前两章中我们将应用部署到了 k8s 中,同时不同的服务之间也可以通过 service 进行调用,现在还有一个步骤就是将我们的应用暴露到公网,并提供域名的访问. 这一步类似于我们以前配置 Ngin ...