将 nvmrc 节点版本与 Docker 节点基础镜像相匹配

Jef*_*son 5 continuous-integration node.js npm nvm docker

我正在尝试简化旧项目的开发+构建过程,其中对节点版本没有太多管理。为了构建用于测试和部署的 docker 映像,我希望能够提取.nvmrc文件中定义的节点版本,并使用它来提取节点基础 docker 映像。

是否已经有一个 docker 基础镜像可以实现类似的功能,或者是我自己编写的情况?

Sim*_*ity 5

如果您可以控制 docker 的命令,则可以在基本映像中使用 docker 构建参数(https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-相互影响

创建一个 docker 文件,如下所示:

ARG  NODE_VERSION
FROM node:${NODE_VERSION}-alpine

# Add your commands here
Run Code Online (Sandbox Code Playgroud)

执行以下命令:

ARG  NODE_VERSION
FROM node:${NODE_VERSION}-alpine

# Add your commands here
Run Code Online (Sandbox Code Playgroud)

添加操作tr -cd [:digit:].将删除文件中的任何字符,.nvmrc例如换行符或可选的前缀v.

当使用多阶段构建(https://docs.docker.com/develop/develop-images/multistage-build/)时 - 主要用于当您希望最终图像的大小尽可能小时,您的第二个图像可以也基于构建参数,但FROM据我测试,所有构建参数都必须在第一个语句之前声明。

这是一个示例,我使用此技巧来取消流星应用程序的流星化(将其转换为可以使用节点运行的应用程序)并将这些文件复制到具有所需节点版本的纯图像上:https ://github.com /迪士尼/流星基地/问题/30