티스토리 뷰

반응형

도커 컨테이너 App을 스케쥴로 일정한 작업을 처리하고 싶을 때 두가지 방법이 있다.

Host에서 도커 Cron을 설정하는 방법과 컨테이너 안에서 Cron을 설정하는 방법이다. 

이번에는 컨테이너 안에서 Cron을 설정하는 방법을 알아보았다.

 

사전 준비

테스트를 위해 Dockerfile로 컨테이너를 실행하였다.


 

Dockerfile

# python library
FROM python:3.9

# installing required packages
RUN apt-get update && apt-get install -y \
    gcc \
    cron \
    net-tools \
    curl \
    iputils-ping \
    vim

WORKDIR /home/cron-test

# Copy cron file to the container
COPY Cron /home/cron-test
COPY test.py /home/cron-test
COPY Cron /etc/cron.d/cronjob

# Give the permission
RUN chmod +x /etc/cron.d/cronjob

# Add the cron job
RUN crontab /etc/cron.d/cronjob

# Cron Activate
CMD ["cron", "-f"]

 

도커 파일을 살펴 보면 Cron이라는 파일을 컨테이너 내부의 /home/cron-test 공간에 카피하여 저장한다. 그 다음 컨테이너 내부에 /etc/cron.d/cronjob 경로 복사를 진행했다. 위의 파일을 실행하면 Cron파일 내부에 설정된 크론이 crontab에 설정된다. Cron파일의 내부는 다음과 같다.

 

* * * * * /usr/local/bin/python3 test.py >> /home/cron-test/test.log 2>&1

 


Cron 삭제/변경/등록

컨테이너에 접속 후 아래의 명령어를 입력한다.

# access container
docker exec -it [containerid] bash

# crontab check
crontab -l

 

스케쥴을 변경할 때는 /etc/cron.d/cronjob 파일을 수정하면 되는데 절차는 아래와 같다. crontab -r 명령어로 삭제하고 다시 등록해도 되지만 crontab -e로 바로 수정도 가능하다!

# delete crontab already registered
crontab -r

# fix the crontab
*/5 * * * * /usr/local/bin/python3 test.py >> /home/cron-test/test.log 2>&1

# apply the cron again
crontab /etc/cron.d/cronjob

 

수정 후 다시 crontab 명령어로 등록해주면 끝~!

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함