Ops/Docker

[Docker] 도커 컨테이너에서 Cron, Crontab 사용하기

장그래 2022. 2. 20. 19:49
반응형

Docker Container에서 Cron 동작시키기

도커 컨테이너 내부의 어플리케이션 상태를 주기적으로 확인해야 되는 상황이 있었는데, 컨테이너 안에서 Cron이 동작하지 않았다. 이를 해결했던 방법을 공유하고자 글을 작성한다. 

먼저 내가 생각했던 방법은 두가지였다.

1. Host OS에서 Docker 컨테이너의 Cron을 동작시킴

도커 컨테이너에서 Cron에서 동작시키는 방법이 가장 좋다고 생각이며, 이러한 방법으로 문제를 해결했을 때 장점은 아래와 같다.

- 컨테이너가 갑작스럽게 종료되더라도, HOST OS에서 로그를 남길 수 있다.
- 다수의 컨테이너 Cron을 HOST에서 관리할 수 있다.

*/5 * * * * docker exec containerA <컨테이너 내부의 스크립트 경로>  # 5분마다 해당 스크립트를 실행하는 명령어

이런 식으로 5분마다 해당 스크립트를 Crontab에 등록하여, 위 문제를 해결하였다. 또한 아래 명령어를 통해 로그를 지속적으로 남기고 있다.
(컨테이너가 쿠버네티스 환경에서 작동하는 것이 아니라면, Container Runcheck 해주는 스크립트를 만들어주는 것도 좋다.)

*/5 * * * * docker exec containerA <컨테이너 내부의 스크립트 경로>  >> <로그 파일 저장할 경로>/123.log 2>&1

2.  Docker 이미지를 만들 때 cron을 설정

이 방법은 실제로 사용한 방법이 아니기에, https://www.baeldung.com/ops/docker-cron-job << 이 링크를 보는 것을 추천한다.

 

 

 

반응형