我有一台Jenkins服务器,在该服务器上观察到一个私有git存储库进行更改,然后触发了管道脚本(该存储库包含一个nodejs应用)。在此管道脚本中,我需要执行以下步骤:
npm install
)npm run build
,这会创建一个dist
文件夹)docker build
)并运行该容器(该容器在dist
文件夹中运行一个脚本)建议使用以下两个选项中的哪个,为什么?
选项A:在jenkins管道中运行npm install
和npm run build
,并在docker构建期间将dist
文件夹复制到docker容器。这样一来,我只能使用npm install --only=production
在docker容器中安装运行时依赖项,从而大大减小了映像大小。
选项B::在Docker构建期间运行npm install
和npm run build
(在Dockerfile中)。如果需要的话,这将允许我在CI服务器外部运行docker容器(我现在没有用例,但是它看起来更干净,因为它更独立)。但是,图像大小会显着增加,我不确定这是否是推荐的方法。
有什么建议吗?
答案 0 :(得分:0)
我会选择选项B。 其背后的原因是,有一些npm软件包可以运行node-gyp,gcc和其他平台相关的构建。 以流行的bcrypt包为例。
使用选项A意味着您的docker和Jenkins机器需要为这种构建保留相同的基础结构,至少可以这样说。