도커 설치 Nextcloud에서 Cron 실행하기

  본래 넥스트클라우드(Nextcloud)는 배경작업으로 cron을 권장하지만 기본작업은 AJAX로 되어있다. 그렇기 때문에 AJAX로 사용하다보면 좀 불안하고 사이트 로딩이 느려지게 된다. 그래서 보통 crontab을 이용하여 cron작업을 예약한다. 

  그런데... 도커(Docker)로 설치하면 넥스트클라우드 기본 설치 페이지에서 소개하는 crontab 설정이 안먹힌다. 컨테이너에 들어있으니 당연하다면 당연하다. 검색해본 결과 cron 설정은 다음과 같았다. 


 

  1. 우선 실행할 쉴스크립트(sh)를 만든다. 이름은 아무렇게나 해도 상관없다.

    sudo nano /root/nextcloud_cron.sh 

 

  2. 쉘스크립트에 다음과 같은 내용을 작성한다.  이 중 nextcloud 부분은 본인의 넥스트클라우드 컨테이너 이름으로 바꿔야 한다. 필자의 경우 도커컴포즈를 사용해 컨테이너 이름이 nextcloud_app_1이었다. 이름은 sudo docker ps를 통해 알 수 있다. 작성하면 Ctrl + X 후 y로 저장한다.

    #!/bin/bash

    docker exec -u www-data nextcloud php cron.php

 

  3. chmod +x /root/nextcloud_cron.sh로 권한을 부여한다.

 

  4. 이제 이 쉘스크립트를 crontab에 등록해야 한다. 기존 설치법으로는 www-data 사용자의 crontab에 등록해야 하지만 도커는 www-data에 등록시 실행되지 않는다. sudo crontab -e로 crontab에 다음과 같은 내용을 작성한다.    

    */5 * * * * /root/nextcloud_cron.sh 

 

  5. 저장하고 빠져나오면 sudo systemctl restart cron으로 crontab를 재시작 해준 후 넥스트클라우드 배경작업 탭에서 CRON으로 변경해준다. 

 

 6. 우분투의 경우 grep CRON /var/log/syslog로 cron 작업로그를 볼 수 있다. 정상적으로 작동하면  CRON[숫자]: (root) CMD (/root/nextcloud_cron.sh)가 5분마다 로그에 남는다. 

 

 

 

    

가장 많이 본 글