docker container내의 crontab에서 scripts/batch.sh를 실행시키고자 한다.
5분마다 실행을하고, 필요한 환경변수를 crontab 작업에 등록시켜준다.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
TZ=Asia/Seoul
*/5 * * * * /batch/scripts/batch.sh 2>&1 | tee -a /proc/1/fd/1 /batch/logs/batch.cron.log
# SHELL=/bin/bash
등록된 작업을 실행시킬 쉘을 직접 지정한다. 기본값은 /bin/sh
이다.
# PATH=/user/local/sbin...
쉘에서 쓰는 환경변수와 crontab에서 사용하는 환경변수는 다르므로 crontab의 환경변수는 따로 설정해주어야한다. set 명령어를 입력하면 현재 쉘에서 사용중인 환경변수를 확인할 수 있는데, 이를 등록시켜준 것이다.
set | egrep '^PATH'
# /proc/1/fd/1
주목할점은 /proc/1/fd/1
인데, 이것은 docker logs <container>
명령어로 확인되는 도커의 표준출력이다. 비슷하게, /proc/1/fd/2
는 표준에러가 된다. 이렇게 세팅할경우 Shellscript의 표준에러와 출력이 docker log에도 찍히고, batch.cron.log
라는 로그 파일에도 append 된다.
'프로그래밍 > Docker' 카테고리의 다른 글
open /Users/<USER>/.docker/buildx/current: permission denied 오류 해결방법 (0) | 2023.10.03 |
---|---|
[Docker] swarm을 알아보자 (0) | 2022.06.01 |
Docker 사용방법 실습 - Node.js / MySQL / Nginx 사용 서비스 만들기 (0) | 2022.01.06 |
Docker 컨테이너와 이미지의 개념과 강점 알아보기 (0) | 2022.01.04 |