La pile de développement ne démarre pas : le volume postgres est monté sur l'ancien chemin, incompatible avec postgres:18 #10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Constaté le 2026-09-09 sur le premier satellite réel monté depuis le template. Docker 29.1.3,
postgres:18-alpine, pnpm 11.8.0,@eqs/*0.7.0.docker compose up -d postgressur un clone neuf échoue : le conteneur sort en 1 immédiatement. La base de développement d'un satellite neuf ne démarre donc pas, et le message d'erreur n'indique pas la cause réelle.Où
docker-compose.yml, servicepostgres:Depuis la 18, l'image officielle place ses données dans un sous-dossier versionné de
/var/lib/postgresql, et non plus directement dans/var/lib/postgresql/data. Un volume monté sur l'ancien chemin lui fait voir « des données PostgreSQL dans un montage inutilisé », et elle refuse de démarrer.Reproduction
Dans un clone neuf du template, avec un
.envdérivé de.env.example:Le message obtenu
Il parle de
pg_ctlcluster, depg_upgradeet d'une migration de version majeure — c'est-à-dire d'un problème de mise à niveau de données :C'est trompeur sur un clone neuf : il n'y a aucune donnée à migrer, le volume vient d'être créé et il est vide. On cherche donc un problème d'historique de base là où il s'agit d'un chemin de montage. Le message dit pourtant la bonne réponse, mais noyée quinze lignes plus bas : « The suggested container configuration for 18+ is to place a single mount at
/var/lib/postgresql».Ce que ça coûte
Bloquant, et dès la première commande.
pnpm dev,pnpm --filter api db:devet tout ce qui touche la base sont inaccessibles tant que ce n'est pas corrigé. C'est la première chose qu'une personne fait en montant un satellite, et elle tombe sur un message qui l'oriente verspg_upgrade.À noter que la suite de conformité, elle, passe :
withTestDatabase()de@eqs/testingmonte sa propre base jetable et n'utilise pas ce compose. Le défaut ne se voit donc ni danspnpm check, ni dans la CI — seulement quand une personne veut développer.Ce que je proposerais
Monter le volume sur
/var/lib/postgresql:Vérifié : après cette modification,
docker compose down -v && docker compose up -d postgresrend un conteneurUp (healthy)etpg_isreadyrépondaccepting connections.Deux remarques pour le traitement :
docker-compose.coolify.ymlet dans la variantenext-fullstack; je ne les ai pas vérifiés.Contournement en place
Le montage est corrigé dans le
docker-compose.ymldu satellite, avec un commentaire qui renvoie à ce ticket. À retirer quand il sera traité.Confirmé, reproduit, corrigé.
Reproduit tel quel sur un clone du gabarit :
docker compose up -d postgressort en 1, et le journal parle bien depg_upgradesur un volume qui vient d'être créé.Le montage passe sur
/var/lib/postgresql, avec le pourquoi écrit à côté. Vérifié après correction :Deux points de votre analyse méritent d'être soulignés, parce qu'ils ont plus de valeur que le correctif lui-même.
« La suite de conformité, elle, passe. » C'est exact, et c'est ce qui rend le défaut coûteux :
withTestDatabase()monte sa propre base jetable, donc nipnpm checkni la CI ne pouvaient l'attraper. Il n'était visible que pour une personne qui veut développer — c'est-à-dire au pire moment, la première commande d'un satellite neuf.« Le message dit pourtant la bonne réponse, noyée quinze lignes plus bas. » Le commentaire posé dans le compose le dit maintenant explicitement, pour que la prochaine personne qui tombe sur ce message ne parte pas chercher du côté de
pg_upgrade.Vos deux remarques de traitement : aucun satellite n'avait de données à perdre, et les composes Coolify n'ont pas de service
postgres— la base y est une ressource du projet, pas un service de l'application. Rien d'autre à corriger.Corrigé dans
fix/tickets-du-premier-satellite, fusionné. Le contournement de votre satellite peut être retiré.Vérifié — corrigé, contournement retiré
Repris le 2026-09-10 sur le satellite qui avait ouvert ce ticket. Nous avons pris votre version du
docker-compose.ymlet retiré notre contournement.La vérification
Volume détruit et recréé de zéro, donc le cas exact du ticket : une base neuve sur
postgres:18. Elle démarre et devient saine.Notre
docker-compose.ymlest à nouveau identique à celui du gabarit — plus aucun commentaire de contournement, et la ligne correspondante a disparu de nos décisions locales.Pourquoi ce ticket comptait plus que sa taille
C'était le seul des douze qui empêchait purement et simplement de commencer.
pnpm dev,db:dev, tout ce qui touche la base était inaccessible, et le message d'erreur parlait depg_upgradesur un volume vide — il envoyait chercher un problème de migration de données là où il s'agissait d'un chemin de montage.Et il était invisible partout où on l'aurait cherché :
pnpm checkest vert, la CI est verte, la suite de conformité passe — parce quewithTestDatabase()lève sa propre base et n'utilise pas ce compose. Seule une personne qui veut développer tombe dessus.Merci pour la correction. De notre côté, c'est refermé.