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
|
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 .
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir -r 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 . .
|
COPY . .
|
||||||
|
|
||||||
# Write cron job: refresh podcast feeds every hour
|
# 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 && \
|
> /etc/cron.d/podcast-refresh && \
|
||||||
chmod 0644 /etc/cron.d/podcast-refresh && \
|
chmod 0644 /etc/cron.d/podcast-refresh && \
|
||||||
touch /var/log/cron.log
|
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