首页 > 解决方案 > 在 docker stack deploy 期间容器未启动,无法找到或加载主类,无法进一步诊断

问题描述

我正在帮助一个项目,该项目由一个 Docker 堆栈和一堆一起工作的服务组成。除了一个之外,所有这些都开始了。

使用docker service ps my-service --no-trunc给了我:task: non-zero exit(1)

使用docker service logs my-service给了我:Error: could not find or load main class

这个特定的容器有一个 Java 应用程序运行以支持 NodeJS 服务器。在npm installnpm run initnpm run build和之后mvn clean install,我能够成功构建 Docker 映像。没有错误。

然而,现在它并没有真正开始。我无法弄清楚如何进一步诊断它。错误消息并没有告诉我很多。Java 代码很旧,但它应该可以工作,我从未接触过它。

主要是,我不知道从哪里开始。谷歌搜索只会出现他们可以访问更多调试信息的东西,而我只是没有足够的东西继续下去。Java不是我的强项。我错过了什么?

更新 3/21/19:感谢@VinDev,我能够获得一些更详细的信息(尝试这个对我来说应该很明显,但学习起来很好)。

用于docker run --name TestMyContainer -it my-image bash启动容器,然后运行堆栈中容器的正常启动命令,即catalina.sh run. 这给了我以下输出:

Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Error: Could not find or load main class

更新 #2 3/21/19:我能够解决这个问题。我应该包含更多信息:我在 Windows 机器上,但正在制作 Linux 容器。我在这里找到了答案:Tomcat 启动 - 错误:找不到或加载主类

Windows 已将该setenv.sh文件恢复为 CRLF EOL。我在 Visual Studio Code 中将其改回,再次运行容器,一切正常!

标签: javadockertomcat

解决方案


我将此添加到原始帖子中,但也将其添加到此处以正确将问题标记为已回答:

我能够解决这个问题。我应该包含更多信息:我在 Windows 机器上,但正在制作 Linux 容器。我在这里找到了答案:Tomcat 启动 - 错误:找不到或加载主类

Windows 已将该setenv.sh文件恢复为 CRLF EOL。我在 Visual Studio Code 中将其改回,再次运行容器,一切正常!


推荐阅读