laravel scheduler 에서 env-variable 적용 안되는 문제 해결하기
Updated on
아~ 대부분 docker 에서 supervisord 로 해서, cron 서비스를 돌리는데.
이 cron 서비스가 돌아가는 곳에서는 제대로된 env 주입이 안된다.
사용자가 달라서 환경변수가 다르기 때문이라고 하는데, 이 문제를 해결하려면 아래와 같이 작성하면 된다.
[supervisord] nodaemon=true [program:cron] command=/bin/bash -c "printenv > /etc/environment && /usr/sbin/cron -f" autostart=true autorestart=true user=root redirect_stderr=true stdout_events_enabled=true stderr_events_enabled=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0
command=/bin/bash -c "printenv > /etc/environment && /usr/sbin/cron -f"
이 부분이 핵심인데, /etc/environment
에 env 환경변수를 저장하는 것이다.
그러면, cron 서비스가 돌때에도 정상적으로 env 환경변수를 사용할 수 있게 된다.