docker-compose.minimal.yml
101 lignes · 3615 octets
# ============================================================================= # Gitrust — Docker Compose minimal (dev local / évaluation) # ============================================================================= # Usage : # cp template/env/dev-local.env .env # # Editer .env : JWT_SECRET (openssl rand -hex 32), ADMIN_PASSWORD # docker compose up -d # docker compose logs -f gitrust # # Ce fichier démarre uniquement les services indispensables : # - gitrust : application principale (HTTP :4000, SSH :2222) # - postgres : base de données PostgreSQL 15 # # Pour une stack production (Redis sessions, SMTP local, CI runner) : # voir template/docker/docker-compose.production.yml # ============================================================================= services: # --------------------------------------------------------------------------- # gitrust — application principale # --------------------------------------------------------------------------- gitrust: # Remplacer par l'image officielle publiée sur le registry du projet. # Format attendu : ghcr.io/<org>/gitrust:<tag> # Exemple : ghcr.io/gitrust/gitrust:latest image: ghcr.io/gitrust/gitrust:latest # <AJUSTER_REGISTRY_ET_TAG> depends_on: postgres: condition: service_healthy ports: # HTTP — interface web et API REST - "4000:4000" # SSH — git clone/push via SSH - "2222:2222" volumes: # Bare repos git (persistés entre redémarrages) - gitrust_repos:/opt/gitrust/data/repos # Clé hôte SSH (générée au premier démarrage, doit survivre aux redémarrages) - gitrust_keys:/opt/gitrust/data env_file: # Le .env doit être dans le même dossier que ce fichier (ou à la racine du projet). # Variables critiques à renseigner avant le premier démarrage : # DATABASE_URL, JWT_SECRET, ADMIN_PASSWORD - ./.env restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:4000/api/v1/auth/me"] interval: 30s timeout: 10s retries: 5 start_period: 20s # --------------------------------------------------------------------------- # postgres — base de données # --------------------------------------------------------------------------- postgres: image: postgres:15-alpine environment: # Ces valeurs doivent correspondre à DATABASE_URL dans .env. # Format : postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB} POSTGRES_USER: gitrust POSTGRES_PASSWORD: gitrust # <CHANGER_EN_PRODUCTION> POSTGRES_DB: gitrust_dev volumes: - postgres_data:/var/lib/postgresql/data # Ne pas exposer PostgreSQL sur le réseau hôte en production. # Décommenter uniquement pour debug local (accès psql depuis l'hôte) : # ports: # - "127.0.0.1:5432:5432" restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U gitrust -d gitrust_dev"] interval: 10s timeout: 5s retries: 5 # ----------------------------------------------------------------------------- # Volumes nommés — persistés sur le système hôte # ----------------------------------------------------------------------------- volumes: # Bare repos git : contient tous les dépôts hébergés gitrust_repos: # Clé hôte SSH ed25519 — NE PAS SUPPRIMER après le premier démarrage. # La supprimer invalide les known_hosts de tous les utilisateurs. gitrust_keys: # Données PostgreSQL postgres_data:
GitRust