DinD环境下的Docker层缓存

前言 现在越来越多的CICD平台都开始使用DockerInDocker环境进行自动构建,随之而来的问题就是因为构建是在容器内构建,而容器环境在任务结束时会就地销毁,导致下一次构建时无法使用上次构建的缓存,基础镜像和项目依赖全部都要重新构建,对于企业大型项目来说,动辄十来分钟的构建时间不提,国内下载项目依赖包的时候还有可能会导致超时失败,如此不稳定的工作流对于CICD肯定是无法接受的。 为了解决这个…

0评论

Docker搭建自己的企业级CICD(四)Drone的CD

终于到了最激动人心的时刻了,自动化部署! Docker环境下的自动部署不同于k8s,没有容器编排工具的情况下,实际上就是使用ssh的方式敲命令docker run而已。 编写.drone.yml 接着我们前文中CI的后面写,把CD的步骤也加上去,这里提供完整的yml,仍然是vue3项目: kind: pipeline type: docker name: hulu-project steps: -…

7评论

Docker搭建自己的企业级CICD(三)Drone的CI

CI/CD整体来说就是自动构建和自动部署,以容器化项目来说,CI包含了拉取代码,然后使用dockerfile进行项目依赖的重建和对源码的编译,最后打包成docker镜像,push到镜像仓库,本期我们将了解如何使用Drone进行CI,而Drone的CD步骤则放到下期再讲。 本文假设您已按照前几期的文章部署好了drone和runner。 前言 docker使用drone进行CI分为几个步骤: 注册镜像…

2评论

Docker搭建自己的企业级CICD(二)部署DRONE

在我们成功搭建了Github的镜像仓库之后,终于轮到CICD的正片了,我们的CICD平台选择使用Drone,一个原生支持Docker,拥抱云原生的CICD平台。 Drone支持多种type的工作流管道,除了最常用的K8S和Docker以外,还支持直接在服务器环境运行的Exec类型,在远程服务器执行的SSH类型,除了这些还有AWS、DIGITAL OCEAN等,具体的可以参考Drone的官方文档。 …

1评论

Docker搭建自己的企业级CICD(一)Gitlab镜像仓库

因为公司的Gitlab没有给我那么高权限,所以我必须做一个我个人拥有最高权限的镜像代码仓库,不然drone在做ci的时候是获取不到代码仓库列表的,注意新建的代码仓库如果是用IP访问的话,Gitlab默认是无法推送镜像到目标仓库的,因为有一个安全设置需要更改,需要管理员权限去进行开启,我这里连蒙带骗糊弄我们运维帮我开了,大概是在Admin Area里设置,你可以先试试直接镜像,如果报错的话你可以用错…

1评论

搭建自己的企业级CICD-引言

最近在自己的服务器上k8s环境和公司的测试服务器docker环境下各搭了一套cicd,遇到了很多坑,且国内查不到什么中文资料,所以特此记述一下遇到的问题,和解决的过程。 考虑到实际上很少有人有自建的k8s集群,更多的是单一的云服务器使用docker来部署自己的项目,而恰好我也在公司的测试环境下也搭建了一套docker的cicd,所以本系列文章将分为K8S版和Docker版,读者可以按需浏览。 Do…

0评论

VisualStudio2019远程调试Docker容器内应用

因为经常要将服务部署到公司内网测试环境进行测试,一旦出现bug除了查日志就只能让app端进行抓包,非常的麻烦,痛定思痛,研究了一下VS2019的远程调试功能,废话不多说,直接整。 首先你要确定你的代码发布为Debug模式,因为Release会优化IL中间码,导致你附加到进程调试时有时无法命中断点: 然后发布你的代码打包到服务器上构建镜像创建容器后,打开VS2019的附加到进程: 链接类型选择你部署…

0评论

Docker内设置本地时区

业务上有个时间要取的时间要和另外项目的CMS后台配置的时间属于同一个时区,而直接用c#取Datetime.Now实际上获取的是+0时区,业务逻辑会出现错误,查了一圈资料大多数都是要增加配置项,更有甚者要我exec到容器内去改时区。。最后终于查到个靠谱的,通过修改DockerFile,在Build的时候就确定容器的时区,命令如下: ENV TZ=Asia/Shanghai RUN ln -snf /…

0评论