Cómo iniciar múltiples procesos en Debian: este código funciona en Alpine pero no en Debian

1 minuto de lectura

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?

  • 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

¿Ha sido útil esta solución?