d68d385339
- Dockerfile: multi-stage build (python:3.12-slim), non-root appuser (UID 1000), HEALTHCHECK on /health (30s/10s/3retries/15s start-period), ENTRYPOINT prestart.sh runs alembic upgrade head then uvicorn (1 worker) - prestart.sh: set -e, alembic upgrade head, exec uvicorn as PID 1 - docker-compose.yml: postgres:16-alpine + crm-app build from local Dockerfile, depends_on service_healthy, no 'image:' (build from source) - .env.docker.example: template (placeholders, NOT real secrets) - COOLIFY_SETUP.md: deployment guide, domain format https://crm.media-on.de:443 (port is MANDATORY for Let's Encrypt + Traefik routing), AUTH_SECRET min 32 chars - .gitignore: allow .env.docker.example template (was matched by .env.*) 118 tests still pass. No backend code touched.
67 lines
698 B
Plaintext
67 lines
698 B
Plaintext
# Secrets and environment files
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
!.env.docker.example
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
*.egg-info/
|
|
.eggs/
|
|
build/
|
|
dist/
|
|
*.egg
|
|
|
|
# Virtual environments
|
|
.venv/
|
|
venv/
|
|
env/
|
|
ENV/
|
|
|
|
# Test and coverage
|
|
.pytest_cache/
|
|
.coverage
|
|
.coverage.*
|
|
htmlcov/
|
|
coverage.xml
|
|
.mypy_cache/
|
|
.ruff_cache/
|
|
|
|
# Database files
|
|
*.db
|
|
*.db-journal
|
|
*.db-wal
|
|
*.db-shm
|
|
data/
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
.DS_Store
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# Alembic (autogenerated migrations excluded, but keep 0001)
|
|
alembic/versions/__pycache__/
|
|
|
|
# Frontend build artifacts (Phase 4c)
|
|
webui/node_modules/
|
|
webui/dist/
|
|
|
|
# Docker
|
|
.docker-data/
|
|
|
|
# Test artifacts
|
|
.pytest_cache/
|
|
.coverage
|
|
.coverage.*
|
|
htmlcov/
|