Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Docker?(Windows容器)上安装nodejs_Node.js_Docker - Fatal编程技术网

Node.js 如何在Docker?(Windows容器)上安装nodejs

Node.js 如何在Docker?(Windows容器)上安装nodejs,node.js,docker,Node.js,Docker,我刚刚为我的spring boot应用程序创建了docker映像,并实现了一些需要NodeJ的函数。我搜索并尝试了各种方法,但不知道如何使node命令可以在Docker上运行 我把诺德拉进了码头 docker pull node 这是我的文件 FROM openjdk:8-jre EXPOSE 8080 ADD target/testdemo-1.0.0-BUILD-SNAPSHOT.war /testdemo-1.0.0-BUILD-SNAPSHOT.war ENTRYPOINT [&qu

我刚刚为我的spring boot应用程序创建了docker映像,并实现了一些需要NodeJ的函数。我搜索并尝试了各种方法,但不知道如何使node命令可以在Docker上运行

我把诺德拉进了码头

docker pull node
这是我的文件

FROM openjdk:8-jre 
EXPOSE 8080
ADD target/testdemo-1.0.0-BUILD-SNAPSHOT.war /testdemo-1.0.0-BUILD-SNAPSHOT.war
ENTRYPOINT ["java", "-jar", "/testdemo-1.1.0-BUILD-SNAPSHOT.war"]

RUN msiexec.exe /a https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi /quiet
由于内存问题,我在切换到Linux容器时遇到问题,请告诉我如何在Windows容器上安装nodejs。我刚开始做Docker,所以请对我放松点

先谢谢你

编辑 我将这一行添加到我的Dockerfile中

FROM openjdk:8-jre 
EXPOSE 8080
ADD target/testdemo-1.0.0-BUILD-SNAPSHOT.war /testdemo-1.0.0-BUILD-SNAPSHOT.war
ENTRYPOINT ["java", "-jar", "/testdemo-1.1.0-BUILD-SNAPSHOT.war"]

RUN msiexec.exe /a https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi /quiet
在构建docker映像时,我遇到了这个错误

Step 2/6 : RUN msiexec.exe /a https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi /quiet
 ---> Running in 3b025a7238f2
T h i s   i n s t a l l a t i o n   p a c k a g e   c o u l d   n o t   b e   o p e n e d .     
V e r i f y   t h a t   t h e   p a c k a g e   e x i s t s   a n d   t h a t   y o u   c a n   a c c e s s   i t ,  
 o r   c o n t a c t   t h e   a p p l i c a t i o n   v e n d o r   t o   v e
毕竟,构建docker映像是成功的,但如果我的spring boot应用程序尝试使用node命令,我仍然会收到“'node'未被识别为内部或外部命令,…”错误。

您尚未将node拉入docker。通过执行docker pull node,您实际上可以从dockerhub()下载正式节点映像

实际上,您需要做的是在docker容器中拉取节点。在windows容器中后,如何从命令行执行此操作的最简单方法:

msiexec.exe /a https://nodejs.org/dist/v8.3.0/node-v8.3.0-x64.msi /quiet
FROM openjdk:8-jre 
RUN msiexec.exe /a https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi /quiet
EXPOSE 8080
ADD target/testdemo-1.0.0-BUILD-SNAPSHOT.war /testdemo-1.0.0-BUILD-SNAPSHOT.war
ENTRYPOINT ["java", "-jar", "/testdemo-1.1.0-BUILD-SNAPSHOT.war"]

让我知道它是否有效。

而马雷克的答案可能有效;请确保使用最新版本的node,因为node 8正式为EOL

您还可以将安装命令添加到docker文件中,这样应用程序在启动docker容器时就可以正常工作:

msiexec.exe /a https://nodejs.org/dist/v8.3.0/node-v8.3.0-x64.msi /quiet
FROM openjdk:8-jre 
RUN msiexec.exe /a https://nodejs.org/dist/v12.18.3/node-v12.18.3-x64.msi /quiet
EXPOSE 8080
ADD target/testdemo-1.0.0-BUILD-SNAPSHOT.war /testdemo-1.0.0-BUILD-SNAPSHOT.war
ENTRYPOINT ["java", "-jar", "/testdemo-1.1.0-BUILD-SNAPSHOT.war"]

您不需要实际安装Node,它是一个独立的二进制文件。我在我的dockerfile中添加了建议的命令,但get Node仍然不是可用的命令。我还编辑了我的问题,你能检查一下验证错误吗?我应该设置新的Docker设置吗?您可以尝试将/a更改为/I吗?因此,运行msiexec.exe/i/quietI将其更改为/i并重新生成docker映像,但仍然出现该错误。我还尝试更改docker设置(docker Engine)“实验”:为true,这一次每个步骤都可以正常运行,没有错误,但在运行docker image并尝试命令node之后,版本仍然为“node command找不到”。