我刚刚创建了我的spring boot应用程序的docker映像,并且实现了一些需要nodejs的功能。我搜索并尝试了各种方法,但无法弄清楚如何使node命令可以在Docker上运行。
我已将节点拉入Docker。
docker pull node
这是我的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"]
由于内存问题,我在切换到Linux容器时遇到了问题,所以请告诉我如何在Windows容器上安装nodejs。我刚刚启动Docker,所以请对我轻松一点。
谢谢。
编辑 我将此行添加到了Dockerfile
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'未被识别为内部或外部命令,...”错误。
答案 0 :(得分:1)
虽然Marek的答案可能行得通;请确保您使用最新版本的节点,因为节点8正式终止。
您还可以将安装命令添加到Dockerfile中,这样,您的应用程序在启动Docker容器时便可以实际运行:
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"]
答案 1 :(得分:0)
您尚未将节点拉入Docker 。通过执行docker pull node
,您实际上是从dockerhub(https://hub.docker.com/_/node/)下载官方节点映像。
您实际上要做的实际上是在Docker容器内拉节点。一旦进入Windows容器,最简单的方法就是从命令行进行操作:
msiexec.exe /a https://nodejs.org/dist/v8.3.0/node-v8.3.0-x64.msi /quiet
让我知道它是否有效。