About/Docker

[Docker] Docker 컨테이너 내에서 cron job 실행하는 방법

김징어 2023. 5. 2. 18:34

Docker 컨테이너 내에서 cron job 실행하는 방법

이 글에서는 Docker 컨테이너 내에서 cron job을 실행하는 방법에 대해 알아보겠습니다.

방법

Docker 컨테이너 내에서 cron job을 실행하는 방법은 크게 두 가지로 나뉩니다.

1. Dockerfile에서 cron 설정하기

Dockerfile에 cron 설정을 추가하여 이미지를 빌드하는 방법입니다. 이 방법은 이미지를 빌드할 때 cron job을 설정하여, 컨테이너가 시작될 때 cron이 실행되도록 할 수 있습니다. 다음은 Dockerfile에서 cron 설정 예시입니다.

1
2
3
4
5
FROM ubuntu
RUN apt-get update && apt-get install -y cron
COPY cronfile /etc/cron.d/cronfile
RUN chmod 0644 /etc/cron.d/cronfile
CMD cron && tail -/dev/null
cs

 

위 Dockerfile은 cron을 설치하고, cronfile을 /etc/cron.d/ 디렉토리에 복사합니다. 그리고, cronfile에 대한 권한을 변경한 뒤에, cron과 함께 tail 명령어를 실행합니다. tail 명령어는 컨테이너가 종료되지 않고 실행되도록 합니다.

2. 컨테이너 내에서 cron 설정하기

Docker 컨테이너 내에서 cron job을 설정하는 또 다른 방법은, 이미지를 빌드할 때 cron 설정을 추가하지 않고, 컨테이너가 실행될 때 cron 설정을 추가하는 것입니다. 다음은 이 방법의 예시입니다.

1
2
3
FROM ubuntu
RUN apt-get update && apt-get install -y cron
CMD cron && tail -/dev/null
cs

 

이미지를 빌드할 때 cron 설정을 추가하지 않고, 컨테이너가 실행될 때 cron을 추가합니다. 이를 위해, 컨테이너가 시작될 때 실행될 스크립트를 작성합니다.

1
2
3
4
5
#!/bin/bash
echo "*/5 * * * * root echo 'Hello World'" > /etc/cron.d/cronjob
chmod 0644 /etc/cron.d/cronjob
crontab /etc/cron.d/cronjob
cron
cs

 

이 스크립트는 컨테이너가 시작될 때 실행되며, cronjob 파일을 생성하고, cronjob 파일에 대한 권한을 변경한 뒤에, cronjob을 실행합니다.

요약

Docker 컨테이너 내에서 cron job을 실행하는 방법은 크게 두 가지입니다. Dockerfile에 cron을 설정하여 이미지를 빌드하는 방법과 컨테이너가 실행될 때 cron 설정을 추가하는 방법입니다. Dockerfile에서 cron을 설정하면 이미지 빌드 시에 cron이 실행되도록 할 수 있으며, 컨테이너가 실행될 때 cron을 설정하면 이미지 빌드 시에 cron 설정을 추가하지 않아도 됩니다.

또한, cron job을 실행할 스크립트를 작성해야 합니다. 이 스크립트는 cronjob 파일을 생성하고, cronjob 파일에 대한 권한을 변경한 뒤에, cronjob을 실행합니다.

이를 통해 Docker 컨테이너 내에서도 cron job을 실행할 수 있으며, 이를 이용해 주기적으로 스크립트를 실행하여 자동화된 작업을 수행할 수 있습니다.