Problème lors de ./launcher rebuild, Redis ne démarre pas la deuxième fois

Bonjour à tous.

J’ai eu un problème lors de la reconstruction (mise à jour) de Discourse ; dans le journal, j’ai constaté que lors de l’installation, un premier Redis est lancé sans problème, mais après un certain temps, l’installation tente de le relancer et plante à cause de « server TCP listening socket *:6379: bind: Address already in use ».

Après plusieurs essais et erreurs, y compris avec l’aide de Gemini, j’ai inséré ce bloc de code dans app.yml :

hooks: before_db_migrate: - exec: cmd: - "pkill -9 redis-server || true" - "sleep 2" - "exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf &" - "sleep 5"

et finalement la reconstruction se poursuit.

Voici un extrait du journal avec ma correction qui tue l’instance Redis récalcitrante et la redémarre :


389:C 24 Feb 2026 17:07:21.756 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

389:C 24 Feb 2026 17:07:21.756 * Redis version=7.4.7, bits=64, commit=00000000, modified=1, pid=389, just started

389:C 24 Feb 2026 17:07:21.756 * Configuration loaded

389:M 24 Feb 2026 17:07:21.756 * monotonic clock: POSIX clock_gettime

389:M 24 Feb 2026 17:07:21.757 * Running mode=standalone, port=6379.

389:M 24 Feb 2026 17:07:21.757 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use

389:M 24 Feb 2026 17:07:21.757 # Failed listening on port 6379 (tcp), aborting.

I, [2026-02-24T17:07:31.750972 #1]  INFO -- : > pkill -9 redis-server || true

I, [2026-02-24T17:07:31.758767 #1]  INFO -- : > sleep 2

I, [2026-02-24T17:07:33.761955 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf &

I, [2026-02-24T17:07:33.765205 #1]  INFO -- : > sleep 5

396:C 24 Feb 2026 17:07:33.773 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

396:C 24 Feb 2026 17:07:33.773 * Redis version=7.4.7, bits=64, commit=00000000, modified=1, pid=396, just started

396:C 24 Feb 2026 17:07:33.773 * Configuration loaded

396:M 24 Feb 2026 17:07:33.773 * monotonic clock: POSIX clock_gettime

396:M 24 Feb 2026 17:07:33.774 * Running mode=standalone, port=6379.

396:M 24 Feb 2026 17:07:33.775 * Server initialized

396:M 24 Feb 2026 17:07:33.776 * Loading RDB produced by version 7.4.7

396:M 24 Feb 2026 17:07:33.776 * RDB age 19606 seconds

396:M 24 Feb 2026 17:07:33.776 * RDB memory usage when created 4.60 Mb

396:M 24 Feb 2026 17:07:33.787 * Done loading RDB, keys loaded: 3413, keys expired: 1.

396:M 24 Feb 2026 17:07:33.788 * DB loaded from disk: 0.013 seconds

396:M 24 Feb 2026 17:07:33.788 * Ready to accept connections tcp

Ma question maintenant est : POURQUOI deux lancements de Redis ? Et pourquoi le second trouve-t-il le premier toujours bloqué sur le port 6379 ? Et encore, pourquoi ne pas essayer de l’utiliser s’il est déjà disponible ? Et, enfin, qu’est-ce qui a pu causer ce problème ? Je sais très bien que j’ai mis un pansement sur une plaie sans savoir POURQUOI il y a la plaie, mais au moins ça fonctionne maintenant.

Avant que quelqu’un ne me le demande, NON, je n’ai pas d’autre Redis en cours d’exécution en dehors de Discourse (sinon, la première tentative au début de la reconstruction aurait dû planter), et OUI, Discourse fonctionne avec de nombreux autres conteneurs sur Docker, même si je n’ai jamais eu un tel problème jusqu’à il y a quelques mises à jour.

Toute aide et conseil est apprécié, et désolé si c’est déjà résolu dans un autre sujet, mais j’ai cherché sans succès.