72 lines
1.6 KiB
Bash
72 lines
1.6 KiB
Bash
#!/bin/sh
|
|
|
|
set -e # Exit on error
|
|
|
|
# Default configuration
|
|
PUID=${PUID:-0}
|
|
PGID=${PGID:-0}
|
|
|
|
# Store PIDs in variables
|
|
JAVA_PID=""
|
|
NGINX_PID=""
|
|
|
|
cleanup() {
|
|
echo "Cleaning up processes..."
|
|
|
|
# Check and kill each process individually
|
|
if [ -n "$JAVA_PID" ]; then
|
|
kill -TERM "$JAVA_PID" 2>/dev/null || true
|
|
fi
|
|
if [ -n "$NGINX_PID" ]; then
|
|
kill -TERM "$NGINX_PID" 2>/dev/null || true
|
|
fi
|
|
|
|
wait || true
|
|
echo "All processes have been terminated"
|
|
exit 0
|
|
}
|
|
|
|
setup_permissions() {
|
|
if [ "$(id -u)" = "0" ] && [ "$PUID" != "0" ]; then
|
|
echo "Setting up directory permissions..."
|
|
chown -R "${PUID}:${PGID}" /app /etc/nginx /var/lib/nginx /var/log/nginx /run/nginx.pid /etc/nginx/nginx.conf
|
|
fi
|
|
}
|
|
|
|
start_services() {
|
|
cmd_prefix=""
|
|
if [ "$(id -u)" = "0" ] && [ "$PUID" != "0" ]; then
|
|
cmd_prefix="su-exec ${PUID}:${PGID}"
|
|
fi
|
|
|
|
echo "Starting Java service..."
|
|
if [ -n "$cmd_prefix" ]; then
|
|
$cmd_prefix java -jar -Djava.library.path=/app/tdlib /app/api.jar &
|
|
else
|
|
java -jar -Djava.library.path=/app/tdlib /app/api.jar &
|
|
fi
|
|
JAVA_PID=$!
|
|
|
|
echo "Starting Nginx service..."
|
|
if [ -n "$cmd_prefix" ]; then
|
|
$cmd_prefix nginx -g 'daemon off;' &
|
|
else
|
|
nginx -g 'daemon off;' &
|
|
fi
|
|
NGINX_PID=$!
|
|
}
|
|
|
|
# Set up signal handlers
|
|
trap cleanup TERM INT
|
|
|
|
# Replace nginx.conf.template with environment variables
|
|
envsubst '$NGINX_PORT' < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
|
|
|
|
# Set up permissions
|
|
setup_permissions
|
|
|
|
# Start services
|
|
start_services
|
|
|
|
# Wait for all services to complete
|
|
wait
|