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 -