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/crontab: COPY664를 사용하는 것과 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 -

관련 정보