上一遍文章已经制作好了基于alpine linux的基础jre镜像,打包的jre镜像安装了cronie服务,可以在容器中启用定时任务crontab,例如可以用定时任务清理容器内应用服务日志等,这篇文章基于基础jre镜像打包java应用镜像,Dockerfile文件
#来自的基础镜像
FROM alpine-jre8:3.18.5
#修改者
MAINTAINER mic
#将文件添加到docker容器中,ADD命令会自动解压压缩包,拷贝的文件应都在宿主机的dockerfile工作目录下
ADD gktool.jar /app/lib/gktool.jar
ADD start.sh /app/start.sh
#环境变量
#是否启动crontab,0启动 1不启动,若启动,则定时任务挂载到/etc/crontabs/root文件中 例如 /etc/crontabs/root 文件内容为 */1 * * * * echo " hello cron" >>/bc.log
ENV CRON_FLAG="0"
ENV APP_PATH=/app/lib/gktool.jar
ENV APP_CONF='--spring.config.location=/app/conf/application.properties'
#启动命令
ENTRYPOINT ["/bin/bash","/app/start.sh"]
start.sh脚本
#先启动定时任务 定时任务配置挂载到容器的 /etc/crontabs/root文件中 例如 /etc/crontabs/root 文件内容为 */1 * * * * echo " hello cron" >>/bc.log
if [ ${CRON_FLAG} = "0" ];then
crond -i
fi
#启动应用服务
java -Djava.security.egd=file:/dev/./urandom -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -jar ${APP_PATH} ${APP_CONF}