首页 > 其他 > 详细

docker容器中nginx日志的分割

时间:2020-06-22 16:38:24      阅读:374      评论:0      收藏:0      [点我收藏+]

之前写过一篇在宿主机上的nginx日志分割,现在应为项目运行在docker容器里面,但是容器中并不像宿主机那样安装了crontab定时任务,虽然可以将crontab打包进镜像,但是应为项目没有打包进去,所以只能只能选择其他的解决方案了。

下面我来说明一下这边的解决方案:

在创建好镜像以后,还需要通过docker run 命令来运行生成的镜像文件。但是run就需要通过参数来设置容器的一系列配置。我这里选择的是容器的host网络模式:

什么是host网络模式:简单的来说就是使用宿主机的ip地址,但是使用不同的端口区分不同的容器。这样错的好处一个是可以通过lsof 工具操作,另一个不用修改太多次。

来说一下我的操作过程:

1:docker build -t imagesName . 创建镜像

2:docker run  imagesName -d --name=myname --net=host  -v $(pwd)/logs/nginx:/var1/log/nginx imagesName

来说明以下:-d 就是后台运行的意思。

--name就是运行名字的容器。

--net指定host网络模式

-v 把 nginx 的日志绑定挂载到了当前目录下的 logs 目录下,这是后会在当前路径下创建一个logs文件夹

 

3:编写一个脚本

#!/bin/bash
mv /var/log/nginx/access.log /var/log/nginx/access.log
mv /var/log/nginx/error.log /var/log/nginx/error.log
kill -USR1 `cat /var/run/nginx.pid`

将脚本添加到当前路径的logs/nginx路径下。

4:docker exec 容器ID bash $(pwd)/logs/nginx/脚本命令执行后,或在当前路径logs/nginx目录下出现容器中的日志文件。

5:后续就可以使用宿主机的crontab定时任务了。

* * * * *  docker exec 容器ID bash $(pwd)/logs/nginx/脚本

 

docker容器中nginx日志的分割

原文:https://www.cnblogs.com/first-semon/p/13177253.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!