在Docker环境中滚动Nginx日志有几种常用方法,下面我将介绍最有效的几种方案:
创建logrotate配置文件:
sudo nano /etc/logrotate.d/nginx-docker
添加以下内容(根据实际情况调整路径):
/var/lib/docker/containers/*/*-json.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
}
测试配置:
sudo logrotate -vf /etc/logrotate.d/nginx-docker
修改Docker daemon配置(适用于所有容器):
sudo nano /etc/docker/daemon.json
添加日志限制:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
重启Docker:
sudo systemctl restart docker
创建Dockerfile:
FROM nginx:latest
RUN apt-get update && apt-get install -y logrotate
COPY nginx-logrotate /etc/logrotate.d/nginx
创建nginx-logrotate文件:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
构建并运行容器:
docker build -t nginx-with-logrotate .
docker run -d nginx-with-logrotate
考虑将日志发送到外部系统如: - ELK Stack (Elasticsearch, Logstash, Kibana) - Fluentd - Graylog - AWS CloudWatch Logs
您需要哪种具体实现方式?或者您有特定的环境限制需要考虑吗?