为了账号安全,请及时绑定邮箱和手机立即绑定

容器在启动时重定向日志文件的方法

标签:
Java


* 在启动时重定向日志的方法

1. 背景介绍:将java程序部署到容器中时,通常通过java - jar命令进行启动,这个方式输入的日志在控制台。如果要将该命令输出的日志重定向到容器中的某个文件中,必须通过自定义启动脚本写明重定向的文件名才行

2. 错误做法:

    1. 比如通过Dockerfile文件的CMD命令或者ENTRYPOINT命令指定文件名,这些方法都不行,因为在Dockerfile文件中指定的文件名在容器执行CMD或者ENTRYPOINT命令时,容器并不认为这个文件是它自己的,严格来说这个文件应该是属于宿主机的

    2. 在docker run命令中直接用 > 进行重定向也不行,道理一样,因为该重定向文件还是属于宿主机的

3. 正确做法:

    1. 修改基础镜像,比如centos7.0,新建启动脚本,比如root.sh,脚本内容:

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/default-jvm/

export PATH=$JAVA_HOME/bin:$PATH

nohup /usr/lib/jvm/default-jvm/bin/java -Djava.security.egd=file:/dev/./urandom -jar $1 >dockerlog.txt ($1:传入的要执行的文件 dockerlog.txt:容器中重定向文件名)

    2. 修改root.sh的权限为777

chmod 777 run.sh

    3. 保存提交基础镜像:比如:docker commit  容器ID  镜像名:镜像版本号

    4. 业务镜像继承该基础镜像,而且启动命令指定root.sh

FROM common_wfj_jdk1.8:1.0 基础镜像

VOLUME /tmp

#文件拷贝

ADD ./target/gdcrm-tag-client-0.0.1.jar gdcrm-tag-client.jar

#启动后执行命令

ENTRYPOINT ["/root/run.sh", "/gdcrm-tag-client.jar"] 指定启动脚本以及传入参数

#暴露端口

EXPOSE 8761

    5. 业务镜像启动: docker run  -tid 镜像名:镜像版本号

Python,Maven,Go语言学习视频

©著作权归作者所有:来自51CTO博客作者wx57d917a981752的原创作品,如需转载,请注明出处,否则将追究法律责任


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消