之前看了社区论坛里一位大佬的关于 docker 的帖子,里面提到可以用 docker 解决代码打包部署时因为编译项目多导致很慢的问题。但是里面没具体说到是怎样实施的。所以发个帖子向各位请教下,看本人这样做是否可行。
举个例子:我公司开发语言是 go,项目里有 30 个微服务,每次更新测试环境,都是先 git checkout branch,再 git pull 下代码,然后 make 编译这些服务,再 reload 所有服务,至此环境更新好。
但是每次最慢的就是在 make 这 30 个服务,要花个 2,3 分钟。我是觉得很慢的。所以打算弄个镜像,里面包含 go 语言环境,和测试环境一样的环境变量,及 git 服务。
1.根据镜像起 10 个容器,容器占用内存不需要很大,因为我只需要在容器内编译服务,不启动服务,所以不要很大内存。每个容器指定只编译其中 3 个服务,然后挂载到测试环境的 build 目录中。
2.测试环境写个脚本,每次更新代码时,都是同时执行这 10 个容器内的脚本,这样原来需要花 3*60=180s 的编译时间,现在缩短了十分之一,只需要 18s。
3.挂载到测试环境后,就 reload 下服务,测试环境更新完成。
疑惑点:
一个宿主机内起 10 个容器,在执行脚本,让 10 个容器并行编译服务,是否真的能做到 “并行”?因为假设宿主机是 4 核 8g 的配置,那么最多也只能并行 4 个容器编译吧.