cron 작업이 별도의 프로세스/컨테이너에서 실행되도록 docker swarm에서 별도의 cron 작업 컨테이너를 구성하는 방법을 알고 싶습니다. 나는 docker swarm에서 모든 cron 작업을 완료할 때까지 몇 가지 기사에서 수집한 지식 중 일부를 요약하고 싶습니다. 가능하다면 의견에 개선 사항을 추가하거나 직접 편집하십시오.
이는 cron 작업용 docker 17.04 및 debian:jessie 컨테이너를 사용하여 테스트되었습니다.
답변1
세워
도커파일cron 작업 컨테이너의 경우 cron을 설치하고 컨테이너가 시작될 때 cron 서비스를 시작한 다음 tail 명령을 사용하여 컨테이너를 계속 실행합니다.
RUN apt-get update && apt-get install -qq -yes cron
CMD service cron start && tail -f /dev/null
일하다
docker-compose.yml
services:
cron:
image: debian:jessie
volumes:
- mycronjobs:/etc/cron.d
업무 문서
프로젝트 루트 경로에 cron 작업이 포함된 폴더가 있습니다(특수 문자의 경우 파일 이름에 밑줄만 사용).
me@machine:/projectdir$ ls -al
-rw-rw-r-- 1 me me 978 Apr 26 17:49 docker-compose.yml
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 Dockerfile
drwxrwxr-x 6 me me 4096 Apr 26 16:57 mycronjobs
me@machine:/projectdir$ ls -al mycronjobs
-rw-rw-r-- 1 me me 978 Apr 26 17:49 job-dash-bad
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 job_underscore_good
-rw-rw-r-- 1 me me 1052 Apr 26 18:06 check_running
직업 정의
크론 작업을 할 수 있습니다
/var/spool/cron/crontabs/mycrontab이는 cli 도구를 통해 생성됩니다.$ 예약된 작업/ 일명 사용자 crontab
/etc/crontabs이것은 시스템 전체의 crontab 컬렉션입니다.
- '* * * * *' root /bin/touch /projectdir/system_crontab_works # '가 없는 경우
- /etc/cron.daily매일 실행되는 일반 bash 스크립트가 포함된 폴더입니다.
- /etc/cron.d이는 다음과 유사한 파일이 포함된 시스템 전체 크론 작업이 포함된 폴더입니다./etc/crontabs. 파일에는 대시가 포함되어서는 안 되며 밑줄만 포함되어야 합니다.
- sudo vi /etc/cron.d/system_cron
- '* * * * *' root /bin/touch /projectdir/system_cron.d_works # '가 없는 경우
- sudo chown 루트:루트 /etc/cron.d/system_cron