用容器跑 nginx,但是发现日志不轮转了,今天就把日志轮转设置一下。
设置方法很粗暴,就是在容器里安装 logrotate,然后通过宿主机的定时任务去周期性执行
先写一个 Dockerfile,我直接用的官方镜像
FROM docker.io/library/nginx:1.25.0
ADD sources.list /etc/apt/sources.list
ADD timezone /etc/timezone
ADD logrotate.sh /root/logrotate.sh
RUN apt update && apt install logrotate -y
CMD ["nginx", "-g", "daemon off;"]
文件里写的 logrotate.sh 是执行日志轮转的脚本,内容如下
#!/bin/bash
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
/etc/logrotate.d/nginx 应该是通过包管理器安装的时候自动装的。
在宿主机上写一个脚本
#!/bin/bash
/usr/local/bin/nerdctl exec nginx "/root/logrotate.sh"
再写一个定时任务自动执行这个脚本
0 3 * * * /bin/bash /root/nginx_log.sh
最后可以手动执行以下命令/bin/bash /root/nginx_log.sh 看是否能够手动进行轮转