前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >效率提升 - 鼓捣个性化容器开发环境

效率提升 - 鼓捣个性化容器开发环境

原创
作者头像
mariolu
发布2022-07-01 21:19:17
7161
发布2022-07-01 21:19:17
举报

背景是我司有个具复杂的工程,这个工程引用了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,

代码语言:javascript
复制
sudo docker commit 3bd8d0b98146

然后用docker tag生成一个好记的名字

代码语言:javascript
复制
sudo docker tag 6e939bf3a45b toucan_dev

接下来同事就可以愉快的使用新镜像toucan_dev了,用这个镜像包进入docker开发,就不用去依赖cicd上编译调试了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Dockerfile描述文件
  • 二、生成镜像image
  • 三、启动镜像
  • 四、根据container生成新镜像
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com