- 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>
21 lines
797 B
Text
21 lines
797 B
Text
FROM python:3.12-slim
|
|
|
|
WORKDIR /app
|
|
|
|
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
|
|
|
|
COPY . .
|
|
|
|
# Write cron job: refresh podcast feeds every hour
|
|
# 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
|
|
|
|
# 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"]
|