# Configuration PostgreSQL ## Fichiers de configuration - `postgres/docker-compose.yml` : Configuration Docker Compose - `postgres/docker-compose.env.yml` : Version avec fichier .env (optionnelle) ## Configuration actuelle ### docker-compose.yml ```yaml services: gitea_db: container_name: gitea_db image: postgres:14 restart: always environment: POSTGRES_USER: gitea POSTGRES_PASSWORD: Gitea_Db-2025_Secure POSTGRES_DB: gitea volumes: - gitgit_syoul_fr_db_data:/var/lib/postgresql/data networks: - gitgit_syoul_fr_gitea_net volumes: gitgit_syoul_fr_db_data: external: true networks: gitgit_syoul_fr_gitea_net: external: true ``` ## Variables d'environnement | Variable | Valeur | Description | |----------|--------|-------------| | `POSTGRES_USER` | gitea | Utilisateur de la base de donnees | | `POSTGRES_PASSWORD` | *** | Mot de passe | | `POSTGRES_DB` | gitea | Nom de la base de donnees | ## Volume persistant Le volume `gitgit_syoul_fr_db_data` contient toutes les donnees PostgreSQL : - Tables de la base de donnees - Configuration PostgreSQL - WAL (Write-Ahead Logging) **IMPORTANT** : Ce volume est critique et doit etre sauvegarde regulierement. ## Sauvegardes ### Sauvegarde logique (pg_dump) ```bash # Sauvegarde complete docker exec gitea_db pg_dump -U gitea gitea > backup_$(date +%Y%m%d_%H%M%S).sql # Sauvegarde compressee docker exec gitea_db pg_dump -U gitea gitea | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz ``` ### Restauration ```bash # Restaurer depuis une sauvegarde cat backup.sql | docker exec -i gitea_db psql -U gitea gitea # Ou pour un fichier compresse gunzip -c backup.sql.gz | docker exec -i gitea_db psql -U gitea gitea ``` ### Sauvegarde du volume Docker ```bash # Arreter le conteneur avant la sauvegarde docker stop gitea_db # Sauvegarder le volume docker run --rm \ -v gitgit_syoul_fr_db_data:/data \ -v $(pwd):/backup \ alpine tar cvzf /backup/postgres_volume_$(date +%Y%m%d).tar.gz /data # Redemarrer le conteneur docker start gitea_db ``` ## Maintenance ### Verifier l'etat ```bash docker exec gitea_db pg_isready -U gitea ``` ### Se connecter a la base ```bash docker exec -it gitea_db psql -U gitea gitea ``` ### Lister les tables ```sql \dt ``` ### Taille de la base ```bash docker exec gitea_db psql -U gitea gitea -c "SELECT pg_size_pretty(pg_database_size('gitea'));" ``` ### Vacuum (maintenance) ```bash docker exec gitea_db vacuumdb -U gitea gitea ``` ## Mise a jour ### Mise a jour mineure (14.x -> 14.y) ```bash cd /opt/postgres docker compose pull docker compose up -d ``` ### Mise a jour majeure (14 -> 15) **ATTENTION** : Necessite une migration manuelle des donnees. 1. Sauvegarder la base : ```bash docker exec gitea_db pg_dump -U gitea gitea > backup_before_upgrade.sql ``` 2. Arreter le conteneur : ```bash docker compose down ``` 3. Modifier la version dans docker-compose.yml : ```yaml image: postgres:15 ``` 4. Supprimer l'ancien volume (ATTENTION !) : ```bash # Uniquement si vous avez une sauvegarde ! docker volume rm gitgit_syoul_fr_db_data docker volume create gitgit_syoul_fr_db_data ``` 5. Demarrer le nouveau conteneur : ```bash docker compose up -d ``` 6. Restaurer la base : ```bash cat backup_before_upgrade.sql | docker exec -i gitea_db psql -U gitea gitea ``` ## Depannage ### Connexion refusee ```bash # Verifier que le conteneur tourne docker ps | grep gitea_db # Verifier les logs docker logs gitea_db # Verifier le reseau docker network inspect gitgit_syoul_fr_gitea_net | grep gitea_db ``` ### Base corrompue En cas de corruption, restaurer depuis une sauvegarde : ```bash # Arreter Gitea docker stop gitea # Supprimer et recreer la base docker exec gitea_db psql -U gitea postgres -c "DROP DATABASE gitea;" docker exec gitea_db psql -U gitea postgres -c "CREATE DATABASE gitea;" # Restaurer cat backup.sql | docker exec -i gitea_db psql -U gitea gitea # Redemarrer Gitea docker start gitea ``` ### Performances Optimiser les performances en ajoutant des variables d'environnement : ```yaml environment: POSTGRES_INITDB_ARGS: "--encoding=UTF8" # Ou monter un fichier de configuration personnalise ```