欢迎访问 陈同学博客原文
某新环境需要Jenkins,准备用docker "一条run命令搞定"。其他工具用docker屡试不爽,这次Jenkins是从开始到放弃。
Jenkins作为CI工具,构建过程需依赖对应的构建环境,如:maven、java、npm、docker等。如今是docker盛行的年代,什么都可以打成镜像,docker倒是成了标配。
假设只需要准备maven和java环境,只要把宿主机的maven和jdk挂载到容器即可,再给容器中配置下PATH变量
docker run -d --restart=always --name jenkins \
-p 8085:8080 \
-p 50000:50000 \
-v /usr/local/custom:/lib/custom \
-v /jenkins/data:/var/jenkins_home \
--env-file=/jenkins/env \
jenkins
上述命令中,/usr/local/custom 存放了 apache-maven-3.3.9
和 jdk1.8.0_121
,/jenkins/data 用于存储jenkins的数据。
/jenkins/env 存储了环境变量,如下:
JAVA_HOME=/lib/custom/jdk1.8.0_121
M2_HOME=/lib/custom/apache-maven-3.3.9
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/lib/custom/jdk1.8.0_121/bin:/lib/custom/apache-maven-3.3.9/bin
这样一个简单的CI环境就OK了。
Using Docker-in-Docker for your CI or testing environment? Think twice The simple way to run Docker-in-Docker for CI 在(Docker里的)Jenkins里运行Docker
当Jenkins本身就是容器时,在容器里面构建镜像就有一丢丢麻烦了,有2个方案:
我选了DooD,踩了几个坑,尽非功夫,直接放弃了。有兴趣的伙伴可以参考上面的三篇文章,描述的非常清楚。
无论是DinD,还是DooD,目的都是为了CI。DooD其实没啥意义,DinD又有点作,直接在宿主机安装不就得了。
Jenkins作为CI工具,可以非常稳定的运行在宿主机上,也不存在迁移的问题(当然,如果主机配置低,后续JOB又多,还是得迁移或主机升配),直接部署在主机上是最优选择。
因此,是否以Docker来运行某个产品,得根据具体情况来确定。
本篇纯属技术小伙的好奇心驱使。
欢迎关注陈同学的公众号,一起学习,一起成长
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。