【问题标题】:Matching nvmrc node version to Docker node base image将 nvmrc 节点版本与 Docker 节点基础映像匹配
【发布时间】:2020-03-11 13:19:43
【问题描述】:

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

是否已经有一个 docker base image 可以实现这样的东西,还是只是自己写的?

【问题讨论】:

    标签: node.js docker npm continuous-integration nvm


    【解决方案1】:

    如果您可以控制 docker 的命令,则可以在基础映像中使用 docker build 参数 (https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact)

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

    ARG  NODE_VERSION
    FROM node:${NODE_VERSION}-alpine
    
    # Add your commands here
    

    执行以下命令:

    docker build --build-arg NODE_VERSION=$(cat .nvmrc | tr -cd [:digit:].)-f Dockerfile .
    

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

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

    这是一个示例,我使用此技巧来分解我的流星应用程序(将其转换为可以使用节点运行的应用程序)并将这些文件复制到具有所需节点版本的普通图像上:https://github.com/disney/meteor-base/issues/30

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多