Files
training-software/docker-compose.yml
Paperclip CTO 8054c1e1e4 feat(TRA-233): Django M1 foundation scaffold
- Environment-split settings: base/local/test/prod with django-environ
- Postgres + Redis + Celery wiring (broker, beat, result backend)
- All 9 domain app stubs: accounts, courses, cms, tracking, quizzes,
  training, certificates, reports, notifications
- api app: /healthz/ endpoint, custom DRF exception handler,
  SecurityAuditMiddleware, permissions/throttle/upload-validation stubs
- DRF global baseline: JWT+session auth, closed-by-default permissions,
  cursor/page pagination, drf-spectacular schema generation
- Dockerfile (multi-env build arg), docker-compose.yml (local),
  docker-compose.test.yml (CI-friendly tmpfs Postgres)
- pytest.ini with smoke + settings marker definitions
- tests/test_smoke.py: startup, URL resolution, healthcheck shape
- tests/test_settings_matrix.py: per-profile security assertions
- .github/workflows/ci.yml: test, lint, schema CI jobs
- .env.example with all required vars documented
- .gitignore

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-05-07 09:11:23 +02:00

88 lines
1.8 KiB
YAML

version: "3.9"
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_DB: training
POSTGRES_USER: training
POSTGRES_PASSWORD: training
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U training"]
interval: 5s
timeout: 5s
retries: 10
redis:
image: redis:7-alpine
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10
web:
build:
context: .
args:
REQUIREMENTS_FILE: local.txt
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
env_file:
- .env
environment:
DJANGO_SETTINGS_MODULE: config.settings.local
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
celery:
build:
context: .
args:
REQUIREMENTS_FILE: local.txt
command: celery -A config worker --loglevel=info
volumes:
- .:/app
env_file:
- .env
environment:
DJANGO_SETTINGS_MODULE: config.settings.local
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
celery-beat:
build:
context: .
args:
REQUIREMENTS_FILE: local.txt
command: celery -A config beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
volumes:
- .:/app
env_file:
- .env
environment:
DJANGO_SETTINGS_MODULE: config.settings.local
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
volumes:
postgres_data: