214 lines
4.2 KiB
Markdown
214 lines
4.2 KiB
Markdown
# 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
|
|
```
|
|
|