Cache destination lookups and skip empty resource queries during push server updates. Add database indexes and Postgres storage tuning for hot-update tables, and make the realtime entrypoint forward process failures and signals reliably.
91 lines
2.1 KiB
Bash
91 lines
2.1 KiB
Bash
#!/bin/sh
|
|
|
|
if [ "$1" = "watch" ]; then
|
|
WATCH_MODE="--watch"
|
|
else
|
|
WATCH_MODE=""
|
|
fi
|
|
|
|
log() {
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [ENTRYPOINT] $*"
|
|
}
|
|
|
|
start_logger() {
|
|
prefix="$1"
|
|
fifo_path="$2"
|
|
|
|
while read -r line; do
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') [$prefix] $line"
|
|
done < "$fifo_path" &
|
|
}
|
|
|
|
cleanup() {
|
|
rm -f "$TERMINAL_LOG_FIFO" "$SOKETI_LOG_FIFO"
|
|
}
|
|
|
|
TERMINAL_LOG_FIFO="/tmp/coolify-terminal-log.$$"
|
|
SOKETI_LOG_FIFO="/tmp/coolify-soketi-log.$$"
|
|
|
|
rm -f "$TERMINAL_LOG_FIFO" "$SOKETI_LOG_FIFO"
|
|
mkfifo "$TERMINAL_LOG_FIFO" "$SOKETI_LOG_FIFO"
|
|
|
|
trap cleanup EXIT
|
|
|
|
log "Starting realtime container"
|
|
log "WATCH_MODE=${WATCH_MODE:-off}"
|
|
log "SOKETI_DEBUG=${SOKETI_DEBUG:-unset}"
|
|
log "NODE_OPTIONS=${NODE_OPTIONS:-unset}"
|
|
|
|
start_logger "TERMINAL" "$TERMINAL_LOG_FIFO"
|
|
TERMINAL_LOGGER_PID=$!
|
|
|
|
start_logger "SOKETI" "$SOKETI_LOG_FIFO"
|
|
SOKETI_LOGGER_PID=$!
|
|
|
|
node $WATCH_MODE /terminal/terminal-server.js > "$TERMINAL_LOG_FIFO" 2>&1 &
|
|
TERMINAL_PID=$!
|
|
|
|
log "Terminal server started pid=$TERMINAL_PID logger_pid=$TERMINAL_LOGGER_PID"
|
|
|
|
node /app/bin/server.js start > "$SOKETI_LOG_FIFO" 2>&1 &
|
|
SOKETI_PID=$!
|
|
|
|
log "Soketi started pid=$SOKETI_PID logger_pid=$SOKETI_LOGGER_PID"
|
|
|
|
forward_signal() {
|
|
log "Forwarding signal $1 to terminal=$TERMINAL_PID soketi=$SOKETI_PID"
|
|
|
|
kill -"$1" "$TERMINAL_PID" 2>/dev/null || true
|
|
kill -"$1" "$SOKETI_PID" 2>/dev/null || true
|
|
}
|
|
|
|
trap 'forward_signal TERM' TERM
|
|
trap 'forward_signal INT' INT
|
|
|
|
while true; do
|
|
if ! kill -0 "$TERMINAL_PID" 2>/dev/null; then
|
|
wait "$TERMINAL_PID"
|
|
EXIT_CODE=$?
|
|
|
|
log "Terminal server exited code=$EXIT_CODE; stopping soketi pid=$SOKETI_PID"
|
|
|
|
kill "$SOKETI_PID" 2>/dev/null || true
|
|
wait "$SOKETI_PID" 2>/dev/null || true
|
|
|
|
exit "$EXIT_CODE"
|
|
fi
|
|
|
|
if ! kill -0 "$SOKETI_PID" 2>/dev/null; then
|
|
wait "$SOKETI_PID"
|
|
EXIT_CODE=$?
|
|
|
|
log "Soketi exited code=$EXIT_CODE; stopping terminal pid=$TERMINAL_PID"
|
|
|
|
kill "$TERMINAL_PID" 2>/dev/null || true
|
|
wait "$TERMINAL_PID" 2>/dev/null || true
|
|
|
|
exit "$EXIT_CODE"
|
|
fi
|
|
|
|
sleep 1
|
|
done
|