nginxカスタムdockerイメージ内では、cronサービスは実行されているが、ジョブは実行されていない

nginxカスタムdockerイメージ内では、cronサービスは実行されているが、ジョブは実行されていない

nginxコンテナのDockerfile

FROM nginx:latest

# Remove sym links from nginx image
RUN rm /var/log/nginx/access.log
RUN rm /var/log/nginx/error.log

RUN apt-get update && apt-get install -y logrotate && rm -rf /var/lib/apt/lists/*

COPY nginx.conf /etc/nginx/nginx.conf
# COPY conf.d /etc/nginx/conf.d
# COPY cert/ /etc/nginx/certs
COPY data /data
COPY --chown=root:root nginx /etc/logrotate.d/
RUN echo -e '#!/bin/sh\nlogrotate -f /etc/logrotate.d/nginx\n' > /etc/cron.daily/logrotate-nginx && chmod +x /etc/cron.daily/logrotate-nginx


EXPOSE 80 443
CMD service cron start && nginx -g 'daemon off;'

cronサービスが実行中

root@f11ddfdb471a:/# service cron status
cron is running.

クローンタブ

*/1  *  *  *  *   root    /usr/sbin/logrotate /etc/logrotate.d/nginx
* * * * * echo "Hello world!" >> /var/log/cron.log 2>&1

空のログ

root@f11ddfdb471a:/# cat /var/log/cron.log
root@f11ddfdb471a:/# cat /var/log/cron.log

問題は単一のジョブだけではありません。logrotateもトリガーされていません。

私が試したこと

  1. cronサービスを手動で開始し、nginxコンテナを複数回再起動しました
  2. これらのジョブを手動で実行すると、問題なく動作します

解決

@AlexeyTen、実際あなたは正しいです、

2 番目のジョブにはルート ユーザーが存在せず、最初のジョブのスクリプト権限は 644 ではなく 664 になっています。

関連情報