Fix cron container: switch dcron→cron, export env vars for cron jobs
- dcron doesn't support /etc/cron.d/ (vixie-cron format) — replace with standard 'cron' (vixie cron) which does - Cron jobs run with a stripped environment and couldn't reach the database; fix by dumping Docker env vars to /etc/environment at startup and sourcing it in the cron job entry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
fe4e1b5250
commit
74bebe6451
1 changed files with 6 additions and 3 deletions
|
|
@ -2,7 +2,7 @@ FROM python:3.12-slim
|
|||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends dcron && rm -rf /var/lib/apt/lists/*
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends cron && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
|
@ -10,9 +10,12 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||
COPY . .
|
||||
|
||||
# Write cron job: refresh podcast feeds every hour
|
||||
RUN echo "0 * * * * root cd /app && python manage.py refresh_feeds >> /var/log/cron.log 2>&1" \
|
||||
# The job sources /etc/environment so Docker env vars (DB path, secret key etc.) are available.
|
||||
RUN echo "0 * * * * root . /etc/environment; cd /app && python manage.py refresh_feeds >> /var/log/cron.log 2>&1" \
|
||||
> /etc/cron.d/podcast-refresh && \
|
||||
chmod 0644 /etc/cron.d/podcast-refresh && \
|
||||
touch /var/log/cron.log
|
||||
|
||||
CMD ["dcron", "-f"]
|
||||
# Dump Docker env vars into /etc/environment at container start so cron jobs can read them,
|
||||
# then launch vixie cron in foreground.
|
||||
CMD ["bash", "-c", "printenv > /etc/environment && cron -f"]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue