Files
infrastructure/docs/05-configuration-postgresql.md

4.2 KiB

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

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)

# 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

# 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

# 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

docker exec gitea_db pg_isready -U gitea

Se connecter a la base

docker exec -it gitea_db psql -U gitea gitea

Lister les tables

\dt

Taille de la base

docker exec gitea_db psql -U gitea gitea -c "SELECT pg_size_pretty(pg_database_size('gitea'));"

Vacuum (maintenance)

docker exec gitea_db vacuumdb -U gitea gitea

Mise a jour

Mise a jour mineure (14.x -> 14.y)

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 :

    docker exec gitea_db pg_dump -U gitea gitea > backup_before_upgrade.sql
    
  2. Arreter le conteneur :

    docker compose down
    
  3. Modifier la version dans docker-compose.yml :

    image: postgres:15
    
  4. Supprimer l'ancien volume (ATTENTION !) :

    # 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 :

    docker compose up -d
    
  6. Restaurer la base :

    cat backup_before_upgrade.sql | docker exec -i gitea_db psql -U gitea gitea
    

Depannage

Connexion refusee

# 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 :

# 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 :

environment:
  POSTGRES_INITDB_ARGS: "--encoding=UTF8"
  # Ou monter un fichier de configuration personnalise