diff --git a/apps/lucky/2.20.2/run/start.sh b/apps/lucky/2.20.2/run/start.sh index b38671f33..57057d511 100644 --- a/apps/lucky/2.20.2/run/start.sh +++ b/apps/lucky/2.20.2/run/start.sh @@ -1,22 +1,50 @@ #!/bin/sh -PORT=16601 +DEFAULT_PORT=16601 +PORT_FILE="/goodluck/port" +WAIT_SECONDS=30 + +if [ -f "$PORT_FILE" ]; then + DETECT_PORT=$(cat "$PORT_FILE") + echo "Loaded last port: ${DETECT_PORT}" +else + DETECT_PORT=$DEFAULT_PORT + echo "No previous port found, using default port: ${DETECT_PORT}" +fi /app/lucky -c /goodluck/lucky.conf -runInDocker & MAIN_PID=$! echo "Lucky main started with PID $MAIN_PID" -echo "Waiting for lucky to listen on port ${PORT}..." -while ! nc -z 127.0.0.1 "${PORT}" 2>/dev/null; do +echo "Waiting for lucky to listen on port ${DETECT_PORT} (timeout ${WAIT_SECONDS}s)..." +SECONDS_WAITED=0 +while ! nc -z 127.0.0.1 "${DETECT_PORT}" 2>/dev/null; do sleep 1 + SECONDS_WAITED=$((SECONDS_WAITED + 1)) + + if [ "$SECONDS_WAITED" -ge "$WAIT_SECONDS" ]; then + echo "Timeout waiting for port ${DETECT_PORT}, continue startup..." + break + fi done -echo "Lucky port ${PORT} is up" +if nc -z 127.0.0.1 "${DETECT_PORT}" 2>/dev/null; then + echo "Port ${DETECT_PORT} is up." +else + echo "Port ${DETECT_PORT} still not open, continuing anyway." +fi echo "Running: /app/lucky -rSetHttpAdminPort=${PANEL_APP_PORT_HTTP}" /app/lucky -rSetHttpAdminPort="${PANEL_APP_PORT_HTTP}" + echo "Running: /app/lucky -rSetHttpsAdminPort=${PANEL_APP_PORT_HTTP}" /app/lucky -rSetHttpsAdminPort="${PANEL_APP_PORT_HTTP}" +DIR=$(dirname "$PORT_FILE") +mkdir -p "$DIR" + +echo "${PANEL_APP_PORT_HTTP}" > "$PORT_FILE" +echo "Saved admin port ${PANEL_APP_PORT_HTTP} to ${PORT_FILE}" + wait $MAIN_PID