cronプロセスをドッキングするためにDebianベースのイメージを構築しようとしていますが、cron操作は開始されません。これは私のものですDockerfile
:
FROM debian:jessie
RUN apt-get update && apt-get install -y --no-install-recommends cron
COPY jobs.txt /etc/crontab
RUN touch /log.txt
CMD ["cron", "-f"]
...そしてjobs.txt
ファイル:
* * * * * root echo "job done" >> /log.txt
COPY
交換したときにコマンドに問題があることに気づきました。
COPY jobs.txt /etc/crontab
そして
RUN echo '* * * * * root echo "job done" >> /log.txt' > /etc/crontab
それは非常にうまく動作します。
それでは、ファイルに問題があり、jobs.txt
Dockerがそのファイルを正しい方法でコピーできないのでしょうか?ファイルを修復する必要がありますか、それともまったく異なるアプローチを使用する必要がありますか?
答え1
COPY
使用と使用の唯一の違いは、RUN
ファイルの権限です/etc/crontab
:COPY
664を使用することとRUN
644を使用することです。
/etc/crontab
必要な権限が見つかりませんが、追加した場合
RUN chmod 644 /etc/crontab
COPY
cronjobsを実行した後Dockerfile
(少なくとも私にとって)。それで、権限は次のようにすべきだと思います。644
答え2
この問題について文書化されたすべてのソリューションを試しましたが、次のいずれかが機能します。
cat /etc/crontab | crontab -
すでにいくつかの項目がある場合は、その項目を上書きしたくありません。この場合は、次のようにします。
(crontab -l 2>/dev/null; cat /etc/crontab ) | crontab -