V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
whileFalse
V2EX  ›  问与答

在思考有没有必要为现有自动化构建系统提供基于 docker run 的构建方式

  •  
  •   whileFalse · 2020-05-15 10:20:42 +08:00 · 718 次点击
    这是一个创建于 1686 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我司的自动化构建系统现在使用 docker build 。项目根目录下放一个 Dockerfile 就行。

    但 docker build 有一些限制,比如无法挂载 volume,maven 的包不太能完美缓存。每次构建都要下载一部分,构建时间 2 分钟。我测试过,如果 maven 包完美缓存,构建时间 1 分钟。

    所以我在想是否要提供 docker run 的构建方式 。项目根目录下放一个 buildspec.yml ,在其中指定 runtime (也是 docker 镜像),代码挂载点,卷挂载点,构建指令等等。然后自动化系统会 run 这个 runtime 镜像,将代码复制到指定位置,将卷挂载至指定位置,并执行构建指令。构建指令会在 runtime container 中调用 docker build 生成一个镜像。

    但是我觉得这么做不是很优雅,有以下几个问题:

    1. Dockerfile 仅依赖 Docker,因此容易调试; buildspec.yml 依赖自动化构建系统,出了问题得在自动化构建系统和配置文件中来回查找。
    2. 大大增加自动化系统本身的复杂度,以及 buildspec.yml 会很复杂,难以交给其他人维护
    3. 除了节省一些构建时间之外,看不到明显优势
    4. 日后和其他第三方自动化系统结合可能会有问题,毕竟所有第三方构建肯定支持 docker build,而想要在第三方系统里执行 docker run 外加挂载卷外加 run 的这个 container 内还要能执行 docker build 不一定能成。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2465 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.