로그를 쓰는 도킹 컨테이너가 nginx이고 /var/log/nginx
logrotate가 도킹 장치 컨테이너에 설치되어 있고 nginx의 logrotate 구성 파일이 올바르게 설정되어 있습니다. 로그는 logrotate에 의해 자동으로 회전되지 않습니다. 로그를 수동으로 강제로 회전하여 logrotate -f /path/to/conf-file
을 통해 로그를 회전하면 예상대로 작동합니다.Logrotate - nginx 로그가 도커 컨테이너 내에서 회전하지 않음
내 결론은 무엇인가가 크론을 발사하지 못하지만 이유를 찾을 수 없다는 것입니다.
다음은 고정 표시기 컨테이너 실행 Nginx에 대한 Dockerfile입니다 :
FROM nginx:1.11
# Remove sym links from nginx image
RUN rm /var/log/nginx/access.log
RUN rm /var/log/nginx/error.log
# Install logrotate
RUN apt-get update && apt-get -y install logrotate
# Copy MyApp nginx config
COPY config/nginx.conf /etc/nginx/nginx.conf
#Copy logrotate nginx configuration
COPY config/logrotate.d/nginx /etc/logrotate.d/
그리고 고정 표시기-구성 파일 : 은/etc/logrotate에 :
version: '2'
services:
nginx:
build: ./build
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./auth:/etc/nginx/auth
- ./certs:/etc/nginx/certs
- ./conf:/etc/nginx/conf
- ./sites-enabled:/etc/nginx/sites-enabled
- ./web:/etc/nginx/web
- nginx_logs:/var/log/nginx
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "1"
volumes:
nginx_logs:
networks:
default:
external:
name: my-network
다음의 내용입니다를. d/nginx
/var/log/nginx/*.log {
daily
dateext
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
[ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
endscript
}
,
내용 /etc/cron.daily/logrotate
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
내용 /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
사람이 올바른 방향으로 날 지점 수
이유의 nginx의 의 로그가 logrotate에 의해 자동으로 회전되지 않습니까?
편집
나는 컨테이너에서 실행되고 있지 크론 서비스에이 문제의 근본 원인을 추적 할 수 있습니다. 가능한 해결책은 컨테이너가 nginx와 cron 서비스를 동시에 실행할 수있는 방법을 찾는 것입니다.