# Docker Setup

Ce projet inclut des fichiers Docker pour faciliter le déploiement.

## Fichiers Docker

- `Dockerfile` - Image de production optimisée (multi-stage build)
- `docker-compose.yml` - Configuration pour la production

## Production

Pour construire et démarrer l'application en production :

```bash
# Construire l'image
docker-compose build

# Démarrer les services
docker-compose up -d

# Voir les logs
docker-compose logs -f
```

## Variables d'environnement

Créez un fichier `.env` à la racine du projet à partir du template `.env.example` :

```bash
cp .env.example .env
```

Puis modifiez les valeurs dans `.env` selon votre configuration :

```env
# NextAuth Configuration
NEXTAUTH_SECRET=your-secret-key-here
NEXTAUTH_URL=http://localhost:3000

# PostgreSQL Configuration
POSTGRES_USER=gotgaming
POSTGRES_PASSWORD=change-this-in-production
POSTGRES_DB=gotgaming

# Database URL (optionnel - construite automatiquement si non définie)
# DATABASE_URL=postgresql://gotgaming:change-this-in-production@got-postgres:5432/gotgaming?schema=public

# Docker Volumes (optionnel)
POSTGRES_DATA_PATH=./data/postgres
UPLOADS_PATH=./public/uploads
```

**Important** : 
- Le fichier `.env` est ignoré par Git (ne pas commiter vos secrets)
- Si vous changez `POSTGRES_PASSWORD` après la première initialisation, vous devrez soit réinitialiser la base, soit changer le mot de passe manuellement dans PostgreSQL

## Volumes persistants

### Base de données PostgreSQL

La base de données PostgreSQL est persistée via un volume Docker. Par défaut, elle est stockée dans `./data/postgres`, mais vous pouvez la personnaliser avec la variable d'environnement `POSTGRES_DATA_PATH`.

Les migrations Prisma sont appliquées automatiquement au démarrage du conteneur.

Pour appliquer manuellement les migrations :

```bash
docker-compose exec got-app pnpm dlx prisma migrate deploy
```

### Images uploadées

Les images uploadées (avatars et backgrounds) sont persistées dans un volume Docker. Par défaut, elles sont stockées dans `./uploads` à la racine du projet, mais vous pouvez personnaliser le chemin avec la variable d'environnement `UPLOADS_PATH`.

- Les avatars sont stockés dans `uploads/`
- Les backgrounds sont stockés dans `uploads/backgrounds/`

Exemple pour utiliser un chemin personnalisé :

```bash
UPLOADS_PATH=/path/to/your/uploads docker-compose up -d
```

## Commandes utiles

```bash
# Arrêter les conteneurs
docker-compose down

# Reconstruire sans cache
docker-compose build --no-cache

# Accéder au shell du conteneur
docker-compose exec got-app sh

# Voir les logs en temps réel
docker-compose logs -f got-app
```
