Initial commit: Infrastructure Git CI/CD avec Gitea, Woodpecker, PostgreSQL, Consul et Registrator
This commit is contained in:
213
docs/05-configuration-postgresql.md
Normal file
213
docs/05-configuration-postgresql.md
Normal file
@ -0,0 +1,213 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user