Node.js 如何在Docker?(Windows容器)上安装nodejs
我刚刚为我的spring boot应用程序创建了docker映像,并实现了一些需要NodeJ的函数。我搜索并尝试了各种方法,但不知道如何使node命令可以在Docker上运行 我把诺德拉进了码头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
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找不到”。