aspendigital / docker-octobercms

Dockerized October CMS: PHP, Composer, October core and dependencies
MIT License
150 stars 54 forks source link

cron runs with different env variables #36

Open tobias-kuendig opened 4 years ago

tobias-kuendig commented 4 years ago

By default, cron does not care about the environment variables that are set in the Dockerfile. This means that all scheduled cronjobs will run with a completely different configuration ‒ in my case they run against the wrong database.

A workaround for this is to print all env variables to /etc/environment where crontab will pick them up.

Adding this line to the entrypoint script will fix this problem:

printenv  >> /etc/environment
petehalverson commented 4 years ago

Thanks for the input. The cron examples need some attention.

Which method do you prefer using to trigger your cron process?

tobias-kuendig commented 4 years ago

I'm currently using the ENABLE_CRON method, but mostly because of a current hosting setup that we don't control ourselfes, so it's easier to have everything in one container.

I do think the separate cron container is the nicer solution and I would prefer it for other projects.

jacksun101 commented 3 years ago

By default, cron does not care about the environment variables that are set in the Dockerfile. This means that all scheduled cronjobs will run with a completely different configuration ‒ in my case they run against the wrong database.

A workaround for this is to print all env variables to /etc/environment where crontab will pick them up.

Adding this line to the entrypoint script will fix this problem:

printenv  >> /etc/environment

Thanks, tobias. But where exactly did you add the line in the entrypoint script?

tobias-kuendig commented 3 years ago

I did add this right before the exec line:

# Put env variables to /etc/environtment
printenv | grep -v "no_proxy" >> /etc/environment

exec "$@"

I don't remember why the exclusion of the no_proxy variable was necessary in our case (it's been a while :see_no_evil:)