• docker容器中nginx日志的分割


    之前写过一篇在宿主机上的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文件夹

     注意:/var/log/nginx/access.log是一样的。只不过是挂在的路径不一样

    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/脚本

     这份文档同样也适用于openresty,亲测有效。

    如果要是使用其他微服务需要用户自己去解决

    来补充一下lighttpd微服务的docker容器日志分割,基本和上面的操作是一致的,需要将分割脚本中的mv改成cp后然后使用echo将空值重新写道容器中的日志文件中,如果使用kill杀掉httpd进程的话,需要重启docker了,这样可以避免容器的重新启动。

    docker_mount(){
            cp /usr/local/sunsi/third/lighttpd/log/access.log /var/log/lighttpd/access.${datestring}.log
            cp /usr/local/sunsi/third/lighttpd/log/error.log /var/log/lighttpd/error.${datestring}.log
            #kill -USR1 `cat /usr/local/si/th/ngi/logs/nginx.pid`
            echo >> /usr/local/sunsi/third/lighttpd/log/access.log
            echo >> /usr/local/sunsi/third/lighttpd/log/error.log
    }
    

     如上代码所示。欢迎提问和指正

    作者:first_semon
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    37 反转一个3位整数
    372 在O(1)时间复杂度删除链表节点
    174 删除链表中倒数第n个节点
    13 字符串查找
    4.Single Number(出现一次的数)
    7.斐波那契数列
    6.旋转数组的最小数字
    5.用两个栈实现队列
    垃圾收集器与内存分配策略---确定对象的存亡状态
    Java内存区域与内存溢出异常---对象的内存布局和对象的访问定位
  • 原文地址:https://www.cnblogs.com/first-semon/p/13177253.html
Copyright © 2020-2023  润新知