File size: 1,828 Bytes
a2e06b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/sh

# Exit immediately if a command exits with a non-zero status.
set -e

echo "Starting in APP_MODE: $APP_MODE"

# --- Ensure application directories are writable by the current user ---
# This is important when Docker volumes are bind-mounted from the host and
# the host directory may be owned by root (uid 0), which would prevent the
# non-root container user (uid 1000) from writing output/input files.
for dir in \
    "${GRADIO_OUTPUT_FOLDER:-/home/user/app/output}" \
    "${GRADIO_INPUT_FOLDER:-/home/user/app/input}" \
    "${GRADIO_TEMP_DIR:-/tmp/gradio_tmp}" \
    "${ACCESS_LOGS_FOLDER:-/home/user/app/logs}" \
    "${USAGE_LOGS_FOLDER:-/home/user/app/usage}" \
    "${FEEDBACK_LOGS_FOLDER:-/home/user/app/feedback}" \
    "${CONFIG_FOLDER:-/home/user/app/config}"; do
    mkdir -p "$dir" 2>/dev/null || true
    if [ ! -w "$dir" ]; then
        echo "WARNING: Directory $dir is not writable by current user (uid=$(id -u)). File I/O will fail." >&2
    fi
done

# --- Start the app based on mode ---

if [ "$APP_MODE" = "lambda" ]; then
    echo "Starting in Lambda mode..."
    # The CMD from Dockerfile will be passed as "$@"
    exec python -m awslambdaric "$@"
else
    echo "Starting in Gradio/FastAPI mode..."

    if [ "$RUN_FASTAPI" = "True" ]; then
        echo "Starting in FastAPI mode..."
        
        GRADIO_SERVER_NAME=${GRADIO_SERVER_NAME:-0.0.0.0}
        GRADIO_SERVER_PORT=${GRADIO_SERVER_PORT:-7860}

        # Start uvicorn server.
        echo "Starting with Uvicorn on $GRADIO_SERVER_NAME:$GRADIO_SERVER_PORT"
        exec uvicorn app:app \
            --host $GRADIO_SERVER_NAME \
            --port $GRADIO_SERVER_PORT \
            --proxy-headers \
            --forwarded-allow-ips "*"
    else
        echo "Starting in Gradio mode..."
        exec python app.py
    fi    
fi