Recharger un dump
C’est la copie qui remet une machine debout : toute la base, tous les lecteurs, dans un volume vide. Le fichier d’un seul lecteur repasse par l’interface, sous Restaurer un export.
La séquence
Section intitulée « La séquence »export PGPASSWORD=$(grep -m1 '^POSTGRES_PASSWORD=' .env | cut -d= -f2-)docker compose downdocker volume rm badlen_pgdatadocker compose up -d --wait dbdocker run --rm -i --network badlen_default -e PGPASSWORD postgres:18-alpine \ psql -h db -U badlen -d badlen -v ON_ERROR_STOP=1 < badlen-2026-08-01.sqldocker run --rm --network badlen_default -e PGPASSWORD postgres:18-alpine \ psql -h db -U badlen -d badlen -tAc \ 'select (select count(*) from "User"), (select count(*) from "Account"), (select count(*) from "Transaction")'docker compose up -d appPourquoi chaque ligne est là
Section intitulée « Pourquoi chaque ligne est là »La première est celle par laquelle le dump avait commencé, et elle est répétée plutôt que supposée :
une restauration se fait dans un terminal ouvert longtemps après la prise de la sauvegarde, et
-e PGPASSWORD transmet une variable qui n’y est pas. Ce que vous obtenez alors est
password authentication failed for user "badlen", qui se lit comme un mauvais mot de passe dans
.env plutôt que comme un export absent de ce shell.
--wait n’est pas une politesse. Le volume que vous venez de supprimer était tout le domicile des
données de la base, c’est donc le démarrage où elle crée son cluster à partir de rien, et cela prend
une dizaine de secondes pendant lesquelles le conteneur est levé et le serveur n’écoute pas. Sans
elle, up -d vous rend la main dès que le conteneur existe et psql tombe sur
Connection refused.
ON_ERROR_STOP=1 compte tout autant : sans lui, psql rapporte chaque erreur et sort quand même en
0, et une restauration qui a échoué en chemin ressemble à une qui a marché.
Le décompte est à la restauration ce que la marque de complétion est au dump, et il vient avant l’application plutôt qu’après elle : lecteurs, comptes, opérations. Trois zéros, ou une erreur nommant une relation qui n’existe pas, veulent dire que rien n’a été restauré. Levez l’application sur une base vide et elle applique les migrations et sert une page d’inscription, ce qui ressemble exactement à une première installation, la seule chose à quoi une restauration n’est pas censée ressembler.
Si l’instance porte une autre clé
Section intitulée « Si l’instance porte une autre clé »Si l’instance dans laquelle vous restaurez porte une SECRET_ENCRYPTION_KEY différente, lisez
Restaurer sous une autre clé avant de vous connecter : deux
choses reviennent illisibles, et l’une des deux est votre moyen d’entrer.