我的Spring Boot项目在docker容器上运行时遇到问题。如果我将容器作为妖魔化(docker run -d)运行,则计划任务不起作用。当我在后台运行非图像时,一切正常。不幸的是,我必须像妖魔一样运行它,我不知道如何解决这个问题。谢谢你的任何解决方案:)
我的预定注释:@Scheduled(fixedDelay = 1440000)
这是我的Dockerfile:
FROM java:openjdk-8
ENV SPRING_PROFILES_ACTIVE dev,docker
WORKDIR /app
EXPOSE 9000 9000
RUN apt-get update && apt-get -y install cron
RUN service cron start
COPY build/libs/app.jar /app/app.jar
CMD ["/bin/sh", "-c", "java -jar /app/app.jar --spring.profiles.active=$SPRING_PROFILES_ACTIVE"]
当您将容器作为恶魔运行时,您将无法直接在控制台中看到输出。您可以使用docker日志来检查发生了什么。事实上,它独立于-d
参数。
尝试将the minimalistic scheduled example from the spring documentation包装成图像并使用-d
运行它。
通过运行识别正在运行的容器ID
docker ps
然后从使用中收集日志
docker logs your-container-id
您将看到计划任务按预期工作。