【发布时间】:2020-09-23 08:49:07
【问题描述】:
我在映像 maven:3-alpine 的 docker 容器内执行 mvn clean install 以构建应用程序。在 pom.xml 中我使用了frontend-maven-plugin,因为我需要安装node 和npm,然后运行npm install 来构建前端(角度)。
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.9.1</version>
<configuration>
<nodeVersion>v12.16.1</nodeVersion>
</configuration>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<arguments>install</arguments>
<installDirectory>./</installDirectory>
</configuration>
</execution>
<execution>
<id>ng build</id>
<goals>
<goal>npm</goal>
</goals>
<phase>compile</phase>
<configuration>
<arguments>run-script build</arguments>
</configuration>
</execution>
</executions>
</plugin>
Node 和 npm 会正确安装,但运行时 npm install 会返回错误:Failed to run task: 'npm install' failed. java.io.IOException: Cannot run program "/var/lib/jenkins/workspace/myProject/node/node" (in directory "/var/lib/jenkins/workspace/myProject"): error=2, No such file or directory -> [Help 1]
如果我进入容器 (docker exec) 并尝试手动运行 npm install 它再次给我同样的错误。当我检查节点是否正确安装时,我看到文件/var/lib/jenkins/workspace/myProject/node/node 在那里,但是当我自己尝试从/node 目录中运行节点时,假设node -v 它再次告诉我No such file or directory。我不明白为什么会这样,因为节点在那里!!当前用户也有权执行该文件。
我对这个问题进行了一些搜索,有人说以这种方式在 ubuntu 上安装节点不是正确的方法,但这只发生在我的容器中。如果我在我的本地机器(它也是一个 ubuntu)上尝试相同的操作,那么 node 可以工作。
【问题讨论】:
-
文件模式下是否设置了执行位?
-
看起来像这样:-rwxr-xr-x 1 root root 46228688 Jun 4 10:40 node drwxr-xr-x 3 108 112 4096 Jun 3 13:37 node_modules -rwxr--r- - 1 108 112 893 Jun 3 13:37 npm -rwxr--r-- 1 108 112 464 Jun 3 13:37 npm.cmd 我尝试以 root 身份运行它。
标签: node.js docker maven ubuntu npm