Cybersecurity-Projects/PROJECTS/advanced/ai-threat-detection/dev.compose.yml

98 lines
2.7 KiB
YAML

# ©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