# ©AngelaMos | 2026 # Development Docker Compose services: postgres: image: postgres:18-alpine container_name: vigil-postgres-dev environment: POSTGRES_DB: ${POSTGRES_DB:-angelusvigil} POSTGRES_USER: ${POSTGRES_USER:-vigil} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD required} POSTGRES_INITDB_ARGS: "-E UTF8 --locale=C" volumes: - postgres_dev_data:/var/lib/postgresql/data ports: - "${POSTGRES_HOST_PORT:-16969}:5432" networks: - vigil_network_dev healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-vigil} -d ${POSTGRES_DB:-angelusvigil}"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7.4-alpine container_name: vigil-redis-dev command: redis-server /usr/local/etc/redis/redis.conf volumes: - redis_dev_data:/data - ./infra/redis/redis.conf:/usr/local/etc/redis/redis.conf:ro ports: - "${REDIS_HOST_PORT:-26969}:6379" networks: - vigil_network_dev healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 backend: build: context: . dockerfile: infra/docker/fastapi.dev container_name: vigil-backend-dev environment: ENV: ${ENV:-development} DEBUG: ${DEBUG:-true} LOG_LEVEL: ${LOG_LEVEL:-DEBUG} API_KEY: ${API_KEY:-dev-api-key} DATABASE_URL: postgresql+asyncpg://${POSTGRES_USER:-vigil}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-angelusvigil} REDIS_URL: ${REDIS_URL:-redis://redis:6379} NGINX_LOG_PATH: /var/log/nginx/access.log GEOIP_DB_PATH: /usr/share/GeoIP/GeoLite2-City.mmdb volumes: - ./backend:/app - /app/.venv - /app/__pycache__ - ./data/sample-logs:/var/log/nginx:ro - geoip_dev_data:/usr/share/GeoIP:ro depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - vigil_network_dev ports: - "${BACKEND_HOST_PORT:-36969}:8000" restart: unless-stopped geoip-updater: image: maxmindinc/geoipupdate:latest container_name: vigil-geoip-dev environment: GEOIPUPDATE_ACCOUNT_ID: ${GEOIP_ACCOUNT_ID:-0} GEOIPUPDATE_LICENSE_KEY: ${GEOIP_LICENSE_KEY:-placeholder} GEOIPUPDATE_EDITION_IDS: "GeoLite2-City" GEOIPUPDATE_FREQUENCY: "168" volumes: - geoip_dev_data:/usr/share/GeoIP networks: - vigil_network_dev networks: vigil_network_dev: driver: bridge name: vigil_network_dev volumes: postgres_dev_data: name: vigil_postgres_dev_data redis_dev_data: name: vigil_redis_dev_data geoip_dev_data: name: vigil_geoip_dev_data