如何配置Docker以使用Maven构建和运行jar文件?

问题描述

说明:

您好,所以我在这个问题上停留了一天多。我的目标是创建一个使maven生成jar文件的dockerfile。我想这样做的原因是允许使用CI / CD。我想创建一个工作流,该工作流允许我的主github分支创建docker映像,然后将其推送到Docker Hub。

以前,我有一个标准文件,可以通过添加构建的jar文件并运行它来创建映像。问题是我的github存储库没有目标文件夹,据我所知它也不应该拥有它。由于此设置,我必须构建映像并将其手动推送到docker hub。这是我要变成工作流程的东西。

我一直在使用什么:

FROM adoptopenjdk/openjdk11:alpine-jre
workdir /app
copY ../target/ur-codebin-1.0-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD java -jar -Dspring.profiles.active=prod /app/app.jar

错误/问题:

我现在面临的这个问题是如何让Maven正确构建项目。每当我尝试构建以下更新的dockerfile时,都会出现一个错误,指示尚未安装节点。令我感到困惑的是,据我所知,vaadin依赖项是在构建项目时安装节点的。所以我为什么会收到这个错误没有道理。

更新的Dockerfile

FROM maven:3.5.2-jdk-8-alpine
workdir /app
copY pom.xml .
copY src ./src/
copY frontend ./frontend/
RUN mvn clean install -Pproduction  #I get the error at this step

CMD java -jar -Dspring.profiles.active=prod ./target/ur-codebin-1.0-SNAPSHOT.jar

错误摘要

#10 65.74 [INFO] Couldn't find node. Installing Node and NPM to /root/.vaadin.
#10 65.75 [INFO] ------------------------------------------------------------------------
#10 65.75 [INFO] BUILD FAILURE
#10 65.75 [INFO] ------------------------------------------------------------------------
#10 65.75 [INFO] Total time: 01:03 min
#10 65.75 [INFO] Finished at: 2020-10-20T18:26:14Z
#10 66.00 [INFO] Final Memory: 45M/352M
#10 66.00 [INFO] ------------------------------------------------------------------------
#10 66.00 [ERROR] Failed to execute goal com.vaadin:vaadin-maven-plugin:14.3.7:prepare-frontend (default) on project ur-codebin: Failed to install Node: Unable to detect version of Node. Using command /root/.vaadin/node/node --version: Cannot run program "/root/.vaadin/node/node": error=2,No such file or directory -> [Help 1]
#10 66.00 [ERROR]
#10 66.00 [ERROR] To see the full stack trace of the errors,re-run Maven with the -e switch.
#10 66.00 [ERROR] Re-run Maven using the -X switch to enable full debug logging.
#10 66.00 [ERROR]
#10 66.00 [ERROR] For more information about the errors and possible solutions,please read the following articles:
#10 66.00 [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
------
Failed to solve with frontend dockerfile.v0: Failed to build LLB: executor Failed running [/bin/sh -c mvn clean install -Pproduction]: runc did not terminate sucessfully

令我感到困惑的是,如果我进入堆栈跟踪,就会看到以下堆栈跟踪,其中清楚地指出/root/.vaadin/node/node上的“节点安装成功”

#10 59.83 [INFO] Couldn't find node. Installing Node and NPM to /root/.vaadin.
#10 59.84 [INFO] Installing node version v12.16.0
#10 59.84 [INFO] Downloading https://nodejs.org/dist/v12.16.0/node-v12.16.0-linux-x64.tar.gz to /root/.vaadin/node-v12.16.0-linux-x64.tar.gz
#10 59.84 [INFO] No proxies configured
#10 59.84 [INFO] No proxy was configured,downloading directly
#10 62.81 [INFO] Unpacking /root/.vaadin/node-v12.16.0-linux-x64.tar.gz into /root/.vaadin/node/tmp
#10 64.68 [INFO] copying node binary from /root/.vaadin/node/tmp/node-v12.16.0-linux-x64/bin/node to /root/.vaadin/node/node
#10 64.87 [INFO] Extracting NPM
#10 65.70 [INFO] Local node installation successful.
#10 65.70 [WARNING] Error checking if node is new enough
#10 65.70 com.vaadin.flow.server.frontend.FrontendUtils$UnkNownVersionException: Unable to detect version of node. Using command /root/.vaadin/node/node --version

有人对我如何解决此问题有任何想法吗? 注意:如果您需要更多的堆栈跟踪,我很乐意发送带有完整跟踪的某种文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)