繁体   English   中英

如何在 docker 中将 npm 与旧版本的节点一起使用?

[英]How to use npm with an old version of node in docker?

我正在尝试制作一个将 npm 与节点 14.10.0 一起使用的容器,但我无法让 npm 使用正确的版本。 我已经尝试修改官方节点图像中的 NODE_VERSION 变量并重建它们,并按照本指南从头开始构建它https://www.kabisa.nl/tech/nvm-in-docker/ 在这两种情况下,npm 安装最新的节点版本并且只使用它。 我可以暂时让它与 nvm use 一起使用正确的版本,但由于某种原因我不能在 CMD 或 ENTRYPOINT 块中使用 nvm。

ENV NODE_VERSION 14.10.0
#shows the correct version
RUN nvm use $NODE_VERSION && npm show node version

#error can't find nvm
#RUN which nvm
#but nvm still exists as a command
RUN nvm -v

#can't find NVM 
#CMD ["/bin/sh", "-c", "nvm use 14.10.0 && npm show node version"]
#uses latest version instead of the correct one
CMD ["/bin/sh", "-c", "npm show node version"]

我可以使用 nvm 使用正确的节点版本来安装和构建它,但是由于我无法在 CMD npm start 中使用它,因此使用了错误的版本并且它破坏了应用程序。 更新应用程序不是一种选择。 如何让 npm 在容器中使用正确的节点版本启动应用程序?

如果不需要 nvm,您可以使用node:14.10映像进行构建。 此图像已安装节点 14.10,您可以对其进行扩展。 为此,请将您的代码更改为以下内容:

# syntax=docker/dockerfile:1
FROM node:14.10
...REST_OF_THE_DOCKER_FILE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM