可能只需要更新默认的 dockerfile 模板。
https://codefresh.io/blog/node_docker_multistage/
//cc: @lostintangent
粗略的想法...
FROM node:latest AS base
WORKDIR /usr/src/app
COPY package.json .
FROM base AS dependencies
RUN npm set progress=false && npm config set depth 0
RUN npm install --only=production
RUN cp -R node_modules prod_node_modules
RUN npm install
FROM dependencies AS build
COPY . .
RUN ./node_modules/.bin/gulp
RUN cp -R client prod_client
FROM base AS release
COPY --from=dependencies /usr/src/app/prod_node_modules ./node_modules
COPY --from=build /usr/src/app/prod_client ./client
COPY . .
EXPOSE 3000
CMD npm run start
听起来不错! 我们还应该做到以下几点:
更新内置Docker 语法文件以正确着色新的AS
关键字和--from
标志。 这是较低的 pri,但会很好,因为多阶段构建可能会变得非常普遍
更新 linter 规则以不抱怨FROM
指令的AS foo
子句。 目前,我们对此给出了误报,这并不理想
我们还应该考虑以下增强功能:
在 FROM 指令中使用 AS 子句时,更新悬停提供程序以正确解析图像名称。 现在,当使用 FROM/AS 时,悬停行为被破坏
通过在 COPY 指令和 FROM 指令中键入“--from=”时显示基本映像名称的完成列表来更新 Dockerfile 完成提供程序
当你在它的时候。 Dockerfile 中只能有一条 CMD 指令的警告(绿色曲线)现在是错误的。
嗨,@seank-com。 我相信您描述的错误是 rcjsuen/dockerfile-utils#22。 有关解决方法,请参阅https://github.com/rcjsuen/dockerfile-utils/issues/22#issuecomment -366485869。 该错误应该有望在扩展的下一个版本中修复,因为 #249 已被合并。
如果您发现任何其他奇怪或不正确的验证错误,请随时告诉我。 谢谢!
当前的 Node.js 模板:
FROM节点:10.13-alpine
ENV NODE_ENV 生产
工作目录 /usr/src/app
复制 ["package.json", "package-lock.json ", "npm- shrinkwrap.json", "./"]
运行 npm install --production --silent && mv node_modules ../
复制 。 .
曝光 3000
CMD npm 启动
@lostintangent , @chrisdias我们是否需要改进这一点以获得更好的实践?
@lostintangent @chrisdias你的想法?
此问题已自动关闭,因为它需要更多信息并且最近没有活动。 另请参阅我们的问题报告指南。
快乐编码!
最有用的评论
听起来不错! 我们还应该做到以下几点:
更新内置Docker 语法文件以正确着色新的
AS
关键字和--from
标志。 这是较低的 pri,但会很好,因为多阶段构建可能会变得非常普遍更新 linter 规则以不抱怨
FROM
指令的AS foo
子句。 目前,我们对此给出了误报,这并不理想