77 lines
2.8 KiB
YAML
77 lines
2.8 KiB
YAML
---
|
|
services:
|
|
homelab-dashboard:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
container_name: homelab-automation-dashboard
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8008:8000"
|
|
environment:
|
|
# Clé API pour l'authentification
|
|
- API_KEY=${API_KEY:-dev-key-12345}
|
|
# Utilisateur SSH pour Ansible
|
|
- SSH_USER=${SSH_USER:-automation}
|
|
# Chemin de la clé SSH dans le container
|
|
- SSH_KEY_PATH=/app/ssh_keys/id_rsa
|
|
# Désactiver la vérification des clés SSH (pour les tests)
|
|
- ANSIBLE_HOST_KEY_CHECKING=False
|
|
# Timeout SSH
|
|
- ANSIBLE_TIMEOUT=30
|
|
# Homelab Data folder (monté sur /app/data)
|
|
- HOMELAB_DATA_DIR=${HOMELAB_DATA_DIR:-./data}
|
|
# SQLite DB path et URL (doivent correspondre à app/models/database.py)
|
|
- DB_PATH=/app/data/homelab.db
|
|
- DATABASE_URL=sqlite+aiosqlite:////app/data/homelab.db
|
|
# Répertoire des logs de tâches (format YYYY/MM/JJ)
|
|
- DIR_LOGS_TASKS=/app/tasks_logs
|
|
# Ansible inventory
|
|
- ANSIBLE_INVENTORY=./ansible/inventory
|
|
# Ansible playbooks
|
|
- ANSIBLE_PLAYBOOKS=./ansible/playbooks
|
|
# Ansible group_vars
|
|
- ANSIBLE_GROUP_VARS=./ansible/inventory/group_vars
|
|
# Notifications ntfy (peuvent aussi être définies dans .env)
|
|
- NTFY_BASE_URL=${NTFY_BASE_URL:-http://localhost:8150}
|
|
- NTFY_DEFAULT_TOPIC=${NTFY_DEFAULT_TOPIC:-homelab-events}
|
|
- NTFY_ENABLED=${NTFY_ENABLED:-true}
|
|
- NTFY_TIMEOUT=${NTFY_TIMEOUT:-5}
|
|
- NTFY_USERNAME=${NTFY_USERNAME:-}
|
|
- NTFY_PASSWORD=${NTFY_PASSWORD:-}
|
|
- NTFY_TOKEN=${NTFY_TOKEN:-}
|
|
- NTFY_MSG_TYPE=${NTFY_MSG_TYPE:-ALL}
|
|
volumes:
|
|
# Volume Docker natif pour la base de données SQLite (évite les problèmes I/O sur Windows)
|
|
- homelab_data:/app/data
|
|
# Monter l'inventaire Ansible (permet de modifier sans rebuild)
|
|
- ${ANSIBLE_INVENTORY:-./ansible/inventory}:/ansible/inventory
|
|
# Monter les playbooks (permet de modifier sans rebuild)
|
|
- ${ANSIBLE_PLAYBOOKS:-./ansible/playbooks}:/ansible/playbooks
|
|
# Monter les variables de groupe
|
|
- ${ANSIBLE_GROUP_VARS:-./ansible/inventory/group_vars}:/ansible/inventory/group_vars
|
|
# Monter les clés SSH depuis le host
|
|
- ${SSH_KEY_DIR:-~/.ssh}:/app/ssh_keys:ro
|
|
# Volume pour les logs (optionnel)
|
|
- homelab_logs:/app/logs
|
|
# Monter le répertoire des logs de tâches depuis le host
|
|
- ${DIR_LOGS_TASKS:-./tasks_logs}:/app/tasks_logs
|
|
networks:
|
|
- homelab-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
networks:
|
|
homelab-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
homelab_data:
|
|
driver: local
|
|
homelab_logs:
|
|
driver: local
|