#!/bin/sh
# redirect stdout and stderr to files
exec >/tmp/stdout.log
exec 2>/tmp/stderr.log
# now run the requested CMD without forking a subprocess
exec "$@"
# start-cluster.sh
exec node cluster.js >> /var/log/cluster/console.log 2>&1
And in docker-compose file:
# docker-compose.yml
command: bash -c "./start-cluster.sh"
Starting the cluster with exec replaces the shell with node process and this way it has always PID=1 and my logs are output to file.