About/Docker

Docker 컨테이너에서 크론 작업(cronJob) 실행하기: 설정 및 예제 가이드

김징어 2024. 11. 14. 09:09

크론 작업을 Docker 컨테이너 안에서 실행하는 방법은 개발 및 운영 환경에서 자주 다루어지는 문제 중 하나입니다. 이 글에서는 Docker 컨테이너 내부에서 크론 작업(cron jobs)을 설정하고 실행하는 방법을 단계별로 알아보겠습니다.

Docker 컨테이너 내부에서 크론 작업 실행하기

1. 크론 작업이란?

크론(cron)은 유닉스 계열 운영 체제에서 시간 기반의 작업 스케줄링을 위해 사용되는 시스템 도구입니다. 이를 통해 정기적으로 실행되어야 하는 작업을 자동화할 수 있습니다.

2. 기본 Docker 이미지에 크론 설치하기

Docker 컨테이너 내에서 크론 작업을 실행하기 위해서는 컨테이너에 크론 데몬(cron daemon)이 설치되어 있어야 합니다. 일반적으로 Linux 기반 컨테이너에서 크론을 설정할 수 있으며, 여기에서는 예시로 Ubuntu 이미지를 사용하겠습니다.

3. Dockerfile 생성하기

Docker 컨테이너에서 크론 작업을 실행하기 위해 먼저 Dockerfile을 생성합니다.

예시 Dockerfile

# 베이스 이미지 설정
FROM ubuntu:latest

# 필요한 패키지 업데이트 및 설치
RUN apt-get update && \
    apt-get install -y cron && \
    apt-get clean

# crontab 파일 복사 및 설정
COPY my-cron-job /etc/cron.d/my-cron-job

# 권한 설정
RUN chmod 0644 /etc/cron.d/my-cron-job

# 크론탭을 등록
RUN crontab /etc/cron.d/my-cron-job

# 크론 로그 파일 생성
RUN touch /var/log/cron.log

# 크론 데몬 실행
CMD cron && tail -f /var/log/cron.log

4. 크론 작업 파일 생성하기

my-cron-job 파일은 실행하고자 하는 스케줄링 작업을 정의합니다. 예를 들어, 5분마다 특정 스크립트를 실행하도록 설정할 수 있습니다.

예시 my-cron-job 파일

# 매 5분마다 스크립트 실행
*/5 * * * * root echo "Hello, Cron!" >> /var/log/cron.log 2>&1

이 파일은 매 5분마다 "Hello, Cron!" 메시지를 /var/log/cron.log 파일에 기록하는 작업을 수행합니다.

5. Docker 컨테이너 빌드 및 실행

이제 Dockerfile을 빌드하고 컨테이너를 실행해 보겠습니다.

컨테이너 빌드 명령어

docker build -t cron-container .

컨테이너 실행 명령어

docker run -d cron-container

6. 크론 작업 확인하기

컨테이너에 들어가서 로그를 확인하여 크론 작업이 제대로 실행되고 있는지 확인할 수 있습니다.

로그 확인 명령어

docker exec -it <container_id> tail -f /var/log/cron.log

7. 주의사항 및 베스트 프랙티스

  • Docker 컨테이너의 프로세스는 일반적으로 하나의 메인 프로세스만 실행되므로, 크론 작업을 주 프로세스로 설정할 때는 백그라운드 프로세스 관리에 주의해야 합니다.
  • 크론 작업이 제대로 실행되지 않을 경우, 권한 문제나 경로 문제가 없는지 확인하는 것이 좋습니다.

공식 문서 및 참고 자료