我是docker实现的初学者,我创建了一个简单的“hello world”示例来测试我的docker,
package com.example.demo;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.support.SpringBootServletInitializer;
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class DockerTestingApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(DockerTestingApplication.class, args);
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
Logger logger = LoggerFactory.getLogger(DockerTestingApplication.class);
logger.info(timeStamp +" :: Docker File is running Ok");
}
}
当我在本地运行应用程序时,它工作正常,并将其完美地记录在日志文件中。
现在,问题是当我尝试在docker中的应用程序中运行时, 添加了cron选项卡。 在控制台上,应用程序(jar)被执行,因为我认为它是因为我已经给出了5分钟的cron时间段,并且在每5分钟之后它执行jar。 但我将如何验证其工作原理?
DOCKER文件: -
FROM openjdk:8-jre-alpine
RUN apk add --no-cache bash
ENV LOG_LOCATION /var/log/applogs
RUN rm -rf /var/cache/apk/* \
&& mkdir /etc/test && mkdir /var/log/applogs
ADD crontab /etc/cron.d/crontab
ADD jar/ /etc/test/
CMD chmod +777 /var/log/applogs
RUN crontab /etc/cron.d/crontab
CMD ["/usr/sbin/crond", "-f", "-d", "0"]
CRONTAB: -
#!/bin/bash
*/5 * * * * root java -Dlogfile.location="/var/log/applogs/Log.log" -jar /etc/test/DockerTesting-0.0.1-SNAPSHOT.jar
# An empty line is required at the end of this file for a valid cron file.
我甚至登录了docker容器并到达了我给出的日志位置,但它没有创建log.log文件,我搜索了很多但没有达到解决方案。
希望找到解决方案。
答案 0 :(得分:0)
Docker将始终将STDOUT重定向到容器日志位置。简单来说,如果你想阅读日志,你可以通过运行命令来获取它们。
docker logs $container_id_or_container_name
此外,可以从此命令
中检索实际位置docker inspect --format='{{.LogPath}}' $ontainer_id_or_container_name
此处有更多信息stackoverflow question