en heroku sugieren usar el siguiente código para iniciar múltiples procesos en un contenedor:
#!/bin/sh
set -e
# set -x
trap '' SIGTERM
puma -C config/puma.rb &
sidekiq &
wait -n
kill -SIGTERM -$$
wait
Usando alpine funciona.
Si cambio a Debian (11) ya no aparece con estos errores:
trap: SIGTERM: bad trap
y si comento eso:
wait: Illegal option -n
¿Cómo puedo traducir este código para que sea compatible con Debian 11?
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Usar
/bin/bash
en Debian en lugar de/bin/sh
(/bin/sh
es un shell Bourne muy mínimo en Debian y distribuciones relacionadas).– alondras
7 de febrero a las 19:07
Específicamente
/bin/sh
en Debian y derivados es un enlace simbólico a/bin/dash
…– tintineo
7 de febrero a las 19:20
Entonces, ¿cuál es tu sugerencia?
– Fred Hors
7 de febrero a las 19:24
¿Puede lanzar dos contenedores separados, uno que ejecute el servidor principal de Puma (¿Rails?) y otro que ejecute el trabajador de Sidekiq? Los dos contenedores podrían usar la misma imagen pero anular el comando para ejecutar un componente u otro. Este enfoque tiende a ser más fácil de administrar y escalar, especialmente si uno de los procesos puede fallar en tiempo de ejecución.
– David laberinto
7 de febrero a las 20:58