我正在帮助一个项目,该项目由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 install
,npm run init
,npm run build
和mvn 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中将其改回,再次运行了容器,一切正常!
答案 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.jar
或tomcat-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中将其改回,再次运行了容器,一切正常!