当前位置:网站首页>效率提升 - 鼓捣个性化容器开发环境
效率提升 - 鼓捣个性化容器开发环境
2022-07-01 21:47:00 【mariolu】
背景是我司有个具复杂的工程,这个工程引用了27次submodule,用cicd测试环境开发效率很慢,因为cicd上开启了构建前清理空间,每次编译都是一次巨量的git拉取过程,编译cache也会一同清空,所以弄一次编译,二三十分钟就过去了,而且还可能二三十分钟只是解决一个开发的编译错误。时间得不偿失。
一、Dockerfile描述文件
于是我有了想法。线上cicd上根据这份docker描述文件编译的
白话下这个描述文件,
- 去网上下载一份centos7.4的镜像,
- 在目录下把编译打包好的程序zip文件放到/data/app/approot目录下,
- yum安装一些允许或者必要的包
- 再执行后续的一些命令。
二、生成镜像image
好了根据这份文件,执行以下命令
sudo docker build -t fullfish/toucan -f ./Dockerfile .
-f指定了Dockerfile的路径,-t表示生成的image名字,
如果这些步骤都成功了,然后就可以用docker image ls查看到刚刚打包好的image
三、启动镜像
然后启动这个image,sudo docker run -d --rm -it --entrypoint bash fullfish/toucan
接着就可以用docker container ls查看到这个启动的container实例。
然后就可以用id或者names进入这个container,sudo docker exec -it 3bd8d0b98146 bash
或者sudo docker exec -it silly_spence bash
然后这个container里面,我们把工程代码都git下载下来,再里面把整个编译环境都搞定。比如说我的这个工程
缺失了这些个必要的第三方组件,
其中一个比较有意思的是libstdc++-static,这个包其实很隐蔽,因为我的代码是静态编译libstdc++,所以即使镜像里面有libstdc++.so也是不行的。这个缺失会在代码链接库阶段的时候报错。另一个是gcc-c++,这个其实就是centos7的gcc4.8版本。
这样镜像包根据线下cicd环境centos7镜像包加入这些必须包和gcc4.8开发环境。
四、根据container生成新镜像
好了我也在这个Dockerfile完善了一些依赖库信息。接下来我要把这个image分享给同事,怎么弄呢。就是说把这个完善的container再生成image。然后同事就可以根据这个新image做他们自己的开发环境。
用docker commit提交这个id,
sudo docker commit 3bd8d0b98146
然后用docker tag生成一个好记的名字
sudo docker tag 6e939bf3a45b toucan_dev
接下来同事就可以愉快的使用新镜像toucan_dev了,用这个镜像包进入docker开发,就不用去依赖cicd上编译调试了
边栏推荐
- 91.(cesium篇)cesium火箭发射模拟
- MQ learning notes
- Compensation des créneaux horaires
- MySQL数据库详细学习教程
- Relationship and difference between enterprise architecture and project management
- Design and practice of new generation cloud native database
- CSDN购买的课程从哪里可以进入
- PHP reflective XSS, reflective XSS test and repair
- 详解Kubernetes网络模型
- 性能测试计划怎么编写
猜你喜欢
Chapter 9 Yunji datacanvas company has been ranked top 3 in China's machine learning platform market
Microsoft, Columbia University | Godel: large scale pre training of goal oriented dialogue
比较版本号[双指针截取自己想要的字串]
固定资产管理子系统报表分为什么大类,包括哪些科目
Slope compensation
In the past 100 years, only 6 products have been approved, which is the "adjuvant" behind the vaccine competition
MySQL learning notes - SQL optimization of optimization
企业架构与项目管理的关联和区别
How to write a performance test plan
Easyexcel complex data export
随机推荐
GaussDB(DWS)主动预防排查
园区全光技术选型-中篇
快乐数[环类问题之快慢指针]
Copy ‘XXXX‘ to effectively final temp variable
GenICam GenTL 标准 ver1.5(4)第五章 采集引擎
删除AWS绑定的信用卡账户
flink sql 命令行 连接 yarn
Show member variables and methods in classes in idea
Unity uses SQLite
MySQL empties table data
Getting started with the lockust series
Can you get a raise? Analysis on gold content of PMP certificate
Qtreeview+qabstractitemmodel custom model: the third of a series of tutorials [easy to understand]
PyTorch磨刀篇|argmax和argmin函数
隐藏用户的创建和使用
Easyexcel complex data export
MySQL series transaction log redo log learning notes
PHP reflective XSS, reflective XSS test and repair
Ida dynamic debugging apk
CSDN购买的课程从哪里可以进入