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.