我正在为我的angular ui设置cicd pipeline,并困惑构建命令是否应该在jenkins或docker构建中运行。我见过在jenkinsfile中运行build命令的地方,只有dist文件夹被复制到docker镜像中,在其他地方,它们也会在docker中构建。这方面的良好做法是什么?
cwdobuhd1#
我一直在思考同一个问题,但没有明确的答案。这两种方法都有效。不过,在Dockerfile方法中构建有一个优势。如果我们考虑以下Dockerfile示例格式:
FROM node:20-alpine AS build WORKDIR /usr/src/app COPY package.json package-lock.json ./ RUN npm install COPY . . RUN npm run build <continues>
Docker为缓存的npm install创建了一个单独的层。在此之后,后续的构建不需要创建它,只需要创建具有完整源代码的那个。对于Jenkins,要么npm install必须在每个构建中都完成,要么npm环境应该在不同的构建之间持久化。这两种解决方案都不像Dockerfile那样优雅。
npm install
1条答案
按热度按时间cwdobuhd1#
我一直在思考同一个问题,但没有明确的答案。这两种方法都有效。不过,在Dockerfile方法中构建有一个优势。如果我们考虑以下Dockerfile示例格式:
Docker为缓存的
npm install
创建了一个单独的层。在此之后,后续的构建不需要创建它,只需要创建具有完整源代码的那个。对于Jenkins,要么
npm install
必须在每个构建中都完成,要么npm环境应该在不同的构建之间持久化。这两种解决方案都不像Dockerfile那样优雅。