容器在docker堆栈部署期间未启动,无法找到或加载主类,无法进一步诊断

时间:2019-03-20 23:51:53

标签: java docker tomcat

我正在帮助一个项目,该项目由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 buildmvn clean install之后,我能够成功构建Docker映像。没有错误。

但是,现在实际上还没有开始。我不知道该如何进一步诊断。错误消息并不能告诉我很多。 Java代码很旧,但是应该可以使用,我从没碰过它。

主要,我不知道从这里继续前进。 Google搜索只会显示他们可以访问更多调试信息的内容,而我只是没有足够的余地。 Java不是我的强项。我想念什么?

19年3月21日更新:感谢@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 startup - Error: Could not find or load main class

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

2 个答案:

答案 0 :(得分:0)

运行docker service ls以查看服务是否显示...

也运行docker service inspect my-service

这应该为您提供一个可以用来获取日志的容器ID

docker logs CONTAINER_ID

您也可以自己运行容器

docker run IMAGE_NAME

查看仅将其作为容器运行的结果

/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

似乎找不到bootstrap.jartomcat-juli.jar

也许不是被Dockerfile复制吗?

答案 1 :(得分:0)

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

我能够解决问题。我应该包括更多信息:我在Windows机器上,但是在制作Linux容器。我在这里找到了答案:Tomcat startup - Error: Could not find or load main class

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