Wildfly 可引导 jar 不在 docker 容器中 运行
Wildfly bootable jar does not run in docker container
我正在测试 wildfly 可启动 jar。做了一个简单的项目,用“java -jar myapp-bootable.jar”启动就好了。它基本上只包含一个 index.html。够简单了。
下一步,是围绕它构建一个 docker 图像。这没有用。
这是docker文件
FROM maven:3.6.3-adoptopenjdk-15 as build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM adoptopenjdk:latest
COPY --from=build /usr/src/app/target/myapp-bootable.jar /opt/myapp-bootable.jar
WORKDIR /opt
CMD ["java", "-jar","myapp-bootable.jar"]
我在 mac 上使用相同的 jdk,它确实有效。我真的不明白为什么会收到此错误消息:
Exception in thread "main" java.lang.Exception: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.wildfly.core.jar.boot.Main.runBootableJar(Main.java:162)
at org.wildfly.core.jar.boot.Main.main(Main.java:141)
Caused by: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:337)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:293)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:254)
at org.jboss.modules.LocalModuleFinder.parseModuleXmlFile(LocalModuleFinder.java:250)
at org.jboss.modules.LocalModuleFinder.lambda$findModule(LocalModuleFinder.java:195)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
at org.jboss.modules.LocalModuleFinder.findModule(LocalModuleFinder.java:195)
at org.jboss.modules.ModuleLoader.findModule0(ModuleLoader.java:696)
at org.jboss.modules.ModuleLoader.findModule(ModuleLoader.java:689)
at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:499)
at org.jboss.modules.DelegatingModuleLoader.preloadModule(DelegatingModuleLoader.java:57)
at org.jboss.modules.Module.addPaths(Module.java:1252)
at org.jboss.modules.Module.link(Module.java:1622)
at org.jboss.modules.Module.relinkIfNecessary(Module.java:1650)
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:299)
at org.wildfly.core.jar.boot.Main.runBootableJar(Main.java:160)
... 1 more
Caused by: org.jboss.modules.xml.XmlPullParserException: Failed to resolve artifact 'xerces:xercesImpl:2.12.0.SP03' (position: END_TAG seen ...esources>\n <artifact name="xerces:xercesImpl:2.12.0.SP03"/>... @26:57)
at org.jboss.modules.xml.ModuleXmlParser.parseArtifact(ModuleXmlParser.java:1050)
at org.jboss.modules.xml.ModuleXmlParser.parseResources(ModuleXmlParser.java:937)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleContents(ModuleXmlParser.java:697)
at org.jboss.modules.xml.ModuleXmlParser.parseDocument(ModuleXmlParser.java:469)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:335)
... 16 more
一切都应该在罐子里。如果缺少某些东西,“myapp-bootable.jar”应该不起作用,但确实如此。我什至进入容器并自己输入命令 - 运气不好。也许是类加载器?
我设法成功构建了 docker 图像和 运行 它。从您的错误来看,您似乎已经构建了一个“超薄服务器”(JBoss 模块工件正在从 Maven 本地缓存中解析)。你能检查一下你的 pom.xml 文件,看看你是否设置了 jboss-maven-dist and/or jboss-maven-repo 插件选项。
如果是这种情况,请删除这些选项并重建 jar。这应该工作。
谢谢。
杰夫
我正在测试 wildfly 可启动 jar。做了一个简单的项目,用“java -jar myapp-bootable.jar”启动就好了。它基本上只包含一个 index.html。够简单了。
下一步,是围绕它构建一个 docker 图像。这没有用。
这是docker文件
FROM maven:3.6.3-adoptopenjdk-15 as build
COPY src /usr/src/app/src
COPY pom.xml /usr/src/app
RUN mvn -f /usr/src/app/pom.xml clean package
FROM adoptopenjdk:latest
COPY --from=build /usr/src/app/target/myapp-bootable.jar /opt/myapp-bootable.jar
WORKDIR /opt
CMD ["java", "-jar","myapp-bootable.jar"]
我在 mac 上使用相同的 jdk,它确实有效。我真的不明白为什么会收到此错误消息:
Exception in thread "main" java.lang.Exception: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.wildfly.core.jar.boot.Main.runBootableJar(Main.java:162)
at org.wildfly.core.jar.boot.Main.main(Main.java:141)
Caused by: org.jboss.modules.ModuleLoadException: Error loading module from /tmp/wildfly-bootable-server4167855925626750470/modules/system/layers/base/org/apache/xerces/main/module.xml
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:337)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:293)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:254)
at org.jboss.modules.LocalModuleFinder.parseModuleXmlFile(LocalModuleFinder.java:250)
at org.jboss.modules.LocalModuleFinder.lambda$findModule(LocalModuleFinder.java:195)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:691)
at org.jboss.modules.LocalModuleFinder.findModule(LocalModuleFinder.java:195)
at org.jboss.modules.ModuleLoader.findModule0(ModuleLoader.java:696)
at org.jboss.modules.ModuleLoader.findModule(ModuleLoader.java:689)
at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:499)
at org.jboss.modules.DelegatingModuleLoader.preloadModule(DelegatingModuleLoader.java:57)
at org.jboss.modules.Module.addPaths(Module.java:1252)
at org.jboss.modules.Module.link(Module.java:1622)
at org.jboss.modules.Module.relinkIfNecessary(Module.java:1650)
at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:299)
at org.wildfly.core.jar.boot.Main.runBootableJar(Main.java:160)
... 1 more
Caused by: org.jboss.modules.xml.XmlPullParserException: Failed to resolve artifact 'xerces:xercesImpl:2.12.0.SP03' (position: END_TAG seen ...esources>\n <artifact name="xerces:xercesImpl:2.12.0.SP03"/>... @26:57)
at org.jboss.modules.xml.ModuleXmlParser.parseArtifact(ModuleXmlParser.java:1050)
at org.jboss.modules.xml.ModuleXmlParser.parseResources(ModuleXmlParser.java:937)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleContents(ModuleXmlParser.java:697)
at org.jboss.modules.xml.ModuleXmlParser.parseDocument(ModuleXmlParser.java:469)
at org.jboss.modules.xml.ModuleXmlParser.parseModuleXml(ModuleXmlParser.java:335)
... 16 more
一切都应该在罐子里。如果缺少某些东西,“myapp-bootable.jar”应该不起作用,但确实如此。我什至进入容器并自己输入命令 - 运气不好。也许是类加载器?
我设法成功构建了 docker 图像和 运行 它。从您的错误来看,您似乎已经构建了一个“超薄服务器”(JBoss 模块工件正在从 Maven 本地缓存中解析)。你能检查一下你的 pom.xml 文件,看看你是否设置了 jboss-maven-dist and/or jboss-maven-repo 插件选项。 如果是这种情况,请删除这些选项并重建 jar。这应该工作。 谢谢。 杰夫