openjdk:8-jre-alpine: - 使用带有cron的docker定期执行jar文件

时间:2018-03-16 07:37:54

标签: docker cron alpine

我想使用alpine创建一个docker文件(因为它创建一个轻量级图像)和一个cron(定期执行一个任务),作为一个新手我最初尝试使用ubuntu它工作得很完美,因为我从这里得到了帮助链接UbuntuExample with CRON

现在问题是它创造了沉重的码头图像。我想将这个相同的例子换成高山,但找不到完美的帮助。搜索了很多网站,但没有得到任何丰富的成果。

主要任务: -

我的主要任务是通过docker执行java jar文件并定期执行该jar文件

我到目前为止所尝试的是创建一个简单的docker文件和一个crontab文件,只是为了定期打印消息。

我面临的主要问题是在高山上安装cron。

DOCKERFILE(DockerFile)

   FROM ubuntu:latest
MAINTAINER docker@ekito.fr

# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

#Install Cron
RUN apt-get update
RUN apt-get -y install cron


# Run the command on container startup
CMD cron && tail -f /var/log/cron.log

CRONTAB(crontab)

* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
# Don't remove the empty line at the end of this file. It is required to run the cron job

这对ubuntu非常有用,但是如何实现openjdk:8-jre-alpine

3 个答案:

答案 0 :(得分:3)

openjdk:8-jre-alpine图像库的一个例子:

Dockerfile:

FROM openjdk:8-jre-alpine
MAINTAINER dperezcabrera

ADD java-version-cron /temp/java-version-cron

RUN cat /temp/java-version-cron >> /etc/crontabs/root
RUN rm /temp/java-version-cron

RUN touch /var/log/cron.log

CMD crond 2>&1  >/dev/null && tail -f /var/log/cron.log

脚本java-version-cron

*       *       *       *       *       /usr/bin/java -version >>/var/log/cron.log  2>&1

答案 1 :(得分:2)

终于完成了使用cron执行java jar的任务。发布解决方案,以便它可以帮助其他初学者。

Dockerfile

FROM openjdk:8-jre-alpine
MAINTAINER dperezcabrera

RUN apk update && apk add bash
ADD java-version-cron /temp/java-version-cron
RUN chmod 777 /etc/test/
ADD DockerTesting-0.0.1-SNAPSHOT.jar /etc/test
RUN cat /temp/java-version-cron >> /etc/crontabs/root
RUN rm /temp/java-version-cron

RUN touch /var/log/cron.log

CMD crond 2>&1  >/dev/null && tail -f /var/log/cron.log

<强> java的版本的cron

* * * * * java -jar /etc/test/DockerTesting-0.0.1-SNAPSHOT.jar >> /var/log/cron.log 2>&1
# Don't remove the empty line at the end of this file. It is required to run the cron job

将dockerfile,cron和jar放在同一个文件夹中或根据您的要求。

答案 2 :(得分:0)

n <- 10000
list <- numeric(n)

for(i in 1:n){
trial1 <- sample(0:9,3, replace = TRUE)
trial2 <- sample(0:9,3, replace = TRUE)
winner <- if(trial1 == trial2) 500 else -1
list[i] <-winner
}
mean(list)