GGAMI.NET

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 환경변수를 사용할 수 있게 된다.

https://github.com/laravel/framework/issues/46956

다른 글