cron dockerイメージを正しくビルドする方法は?

cron dockerイメージを正しくビルドする方法は?

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.txtDockerがそのファイルを正しい方法でコピーできないのでしょうか?ファイルを修復する必要がありますか、それともまったく異なるアプローチを使用する必要がありますか?

答え1

COPY使用と使用の唯一の違いは、RUNファイルの権限です/etc/crontabCOPY664を使用することとRUN644を使用することです。

/etc/crontab必要な権限が見つかりませんが、追加した場合

RUN chmod 644 /etc/crontab

COPYcronjobsを実行した後Dockerfile(少なくとも私にとって)。それで、権限は次のようにすべきだと思います。644

答え2

この問題について文書化されたすべてのソリューションを試しましたが、次のいずれかが機能します。

cat /etc/crontab | crontab -

すでにいくつかの項目がある場合は、その項目を上書きしたくありません。この場合は、次のようにします。

(crontab -l 2>/dev/null; cat /etc/crontab ) | crontab -

関連情報