Logrotation не работает в Docker-контейнере через задание cron - PullRequest
0 голосов
/ 22 января 2019

У меня установлен cronjob для запуска logrotate внутри контейнера Docker.

/etc/crontab файл:

30 9    * * *   root    /usr/sbin/logrotate /etc/logrotate.d/apache2

/etc/logrotate.d/apacha2 файл:

/var/log/apache2/*.log {
        daily
        missing
        rotate 5
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                if /etc/init.d/apache2 status > /dev/null ; then \
                    /etc/init.d/apache2 reload > /dev/null; \
                fi;
        endscript
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
}

Dockerfile: ... / немного содержимого / ...... ........... ENTRYPOINT ["/ start"]

start.sh:

#!/bin/bash
/etc/init.d/cron start

Может кто-нибудь подсказать, где я ошибаюсь? Я попытался запустить cron, используя «RUN service cron start» внутри Dockerfile. Это также не сработало.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Поскольку вы используете общедоступный образ httpd, ответ очень прост ...

На этих изображениях не написано ни одного журнала, так как это плохая практика, все журналы собираются в stdout и stderr, что позволяет контейнеруиметь том для журналов.

Это также позволяет упростить получение журналов для других инструментов.

0 голосов
/ 22 января 2019

Попробуйте переписать свои записи cron следующим образом:

30 9    * * *   /usr/sbin/logrotate /etc/logrotate.d/apache2
...