Fix celery container health issues

- Fix import error in notifications/tasks.py (timezone.datetime -> datetime)
- Add healthchecks to celery-worker and celery-beat containers
- Add procps package to Dockerfile for pgrep command
- Add email environment variables to celery containers

The import error was causing celery workers to crash when loading tasks.
Missing healthchecks prevented proper container health monitoring.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Keith Smith
2026-01-09 08:47:58 -07:00
co-authored by Claude Sonnet 4.5
parent 9dd5d9c154
commit e0ee377a20
3 changed files with 26 additions and 1 deletions
+24
View File
@@ -112,6 +112,12 @@ services:
SECRET_KEY: ${SECRET_KEY}
DATABASE_URL: postgresql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-keepitgoing}
REDIS_URL: redis://redis:6379/0
EMAIL_HOST: ${EMAIL_HOST:-}
EMAIL_PORT: ${EMAIL_PORT:-587}
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-}
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-}
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-True}
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL:-noreply@localhost}
networks:
- backend
depends_on:
@@ -120,6 +126,12 @@ services:
redis:
condition: service_healthy
command: celery-worker
healthcheck:
test: ["CMD-SHELL", "celery -A config inspect ping -d celery@$$HOSTNAME"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# =================================================================
# Celery Beat Service - Scheduled task scheduler
@@ -135,6 +147,12 @@ services:
SECRET_KEY: ${SECRET_KEY}
DATABASE_URL: postgresql://${DB_USER:-keepitgoing}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-keepitgoing}
REDIS_URL: redis://redis:6379/0
EMAIL_HOST: ${EMAIL_HOST:-}
EMAIL_PORT: ${EMAIL_PORT:-587}
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-}
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-}
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-True}
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL:-noreply@localhost}
networks:
- backend
depends_on:
@@ -143,6 +161,12 @@ services:
redis:
condition: service_healthy
command: celery-beat
healthcheck:
test: ["CMD-SHELL", "pgrep -f 'celery.*beat' || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# =================================================================
# Named Volumes