当前位置:网站首页>效率提升 - 鼓捣个性化容器开发环境
效率提升 - 鼓捣个性化容器开发环境
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上编译调试了
边栏推荐
猜你喜欢

Flume interview questions

Learning notes on futuretask source code of concurrent programming series

3DE 资源没东西或不对

并发编程系列之FutureTask源码学习笔记

Mysql——》MyISAM存储引擎的索引

QT版本华睿相机的Demo程序实现

删除AWS绑定的信用卡账户

The second anniversary of the three winged bird: the wings are getting richer and the take-off is just around the corner

黑马程序员-软件测试--06阶段2-linux和数据库-01-08第一章-linux操作系统阶段内容说明,linux命令基本格式以及常见形式的说明,操作系统的常见的分类,查看命令帮助信息方法,

Slope compensation
随机推荐
plantuml介绍与使用
隐藏用户的创建和使用
利用SecureCRTPortable远程连接虚拟机
【juc学习之路第9天】屏障衍生工具
详解JMM
功能测试报告的编写
Unity uses SQLite
灵动微 MM32 多路ADC-DMA配置
Icml2022 | interventional contrastive learning based on meta semantic regularization
【日常训练】66. 加一
MySQL learning notes - SQL optimization of optimization
Introduction and download of the latest version of airserver2022
Pytorch sharpening chapter | argmax and argmin functions
企业架构与项目管理的关联和区别
[ecological partner] Kunpeng system engineer training
基准环路增益与相位裕度的测量
linux下清理系统缓存并释放内存
配置筛选机
H5 model trained by keras to tflite
Which securities company should we choose to open an account for flush stock? Is it safe to open an account with a mobile phone?