我有一个spring-boot应用程序运行在一个docker容器中,运行良好。但问题是docker容器中的应用程序日志文件是空的。在logback-spring.xml中,日志路径已配置为/var/log。当我转到docker容器中的/var/log目录时,我可以看到日志文件已创建,如“myservice.log”,但当我“cat”该文件以查看内容时,完全是空的同样当我执行
docker logs <container-id>
它什么也不返回。
我还检查了服务器中的Docker根目录。
/apps/docker/containers/<container-id>/<container-id-json.log>
也是空的。
我的停靠文件具有以下结构。
From private-docker-repo/openjdk:11-jre-slim
WORKDIR /opt/services
COPY target/my-service-0.0.1-SNAPSHOT.jar /opt/services/my-service.jar
CMD java -Dspring.profiles.active=dev -Dserver.port=61016 -jar my-service.jar
EXPOSE 61016
什么原因可以是日志文件在这里是空的。高度赞赏,如果有人可以指出我。
编辑-当我使用linux systemd服务部署相同的jar时,日志写得很好。我想知道为什么相同的jar在docker容器中不打印任何日志
提前感谢!
2条答案
按热度按时间lc8prwob1#
你确信你的应用程序正在运行吗?进入Docker容器并检查它是否正在运行,在我看来它还没有启动。
62lalag42#
我用
ENTRYPOINT
替换了CMD
命令就解决了这个问题。现在日志打印得很好。我搜索了CMD
和ENTRYPOINT
之间的区别,但我仍然不明白这对容器的日志记录有什么影响。所以如果有人能添加评论,说明可能发生了什么,这不仅对我很好,而且对将来看到这个问题的其他人也很好。谢谢你:)