entrypoint.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/bin/sh
  2. set -e
  3. # Include app binaries in our path
  4. export PATH="/app/.venv/bin:$PATH"
  5. # Shared config
  6. : "${ROOM_CAL_DATA_HOME:=/config}"
  7. export ROOM_CAL_DATA_HOME
  8. if [ -z "$TZ" ] && [ -f "$ROOM_CAL_DATA_HOME/config.json" ]; then
  9. TZ=$(python3 -c "import json,sys; print(json.load(open('$ROOM_CAL_DATA_HOME/config.json')).get('timezone',''))" 2>/dev/null || true)
  10. fi
  11. : "${TZ:=UTC}"
  12. export TZ
  13. if [ -z "$ROOM_CAL_API_URL" ] && [ -f "$ROOM_CAL_DATA_HOME/config.json" ]; then
  14. ROOM_CAL_API_URL=$(python3 -c "import json,sys; print(json.load(open('$ROOM_CAL_DATA_HOME/config.json')).get('api_url',''))" 2>/dev/null || true)
  15. fi
  16. export ROOM_CAL_API_URL
  17. SERVICE="${1:-api}"
  18. # MCP
  19. if [ "$SERVICE" = "mcp" ]; then
  20. : "${FASTMCP_HOST:=0.0.0.0}"
  21. : "${FASTMCP_PORT:=8001}"
  22. : "${FASTMCP_LOG_LEVEL:=INFO}"
  23. : "${FASTMCP_ENABLE_RICH_LOGGING:=false}"
  24. : "${FASTMCP_ENABLE_RICH_TRACEBACKS:=false}"
  25. export FASTMCP_TRANSPORT=http
  26. export FASTMCP_HOST FASTMCP_PORT FASTMCP_LOG_LEVEL
  27. export FASTMCP_ENABLE_RICH_LOGGING FASTMCP_ENABLE_RICH_TRACEBACKS
  28. exec room-mcp
  29. fi
  30. # Shared API config
  31. : "${API_HOST:=0.0.0.0}"
  32. : "${API_PORT:=8000}"
  33. : "${LOG_LEVEL:=info}"
  34. # App builds its own loopback URL from API_PORT (internal credential upload)
  35. export API_PORT
  36. LOG_CONFIG=/etc/uvicorn_log.json
  37. [ -f "${ROOM_CAL_DATA_HOME}/uvicorn_log.json" ] && LOG_CONFIG="${ROOM_CAL_DATA_HOME}/uvicorn_log.json"
  38. # Calc-only API
  39. if [ "$SERVICE" = "calc" ]; then
  40. exec uvicorn "room_cal.api.calc_app:app" \
  41. --host "$API_HOST" \
  42. --port "$API_PORT" \
  43. --log-config "$LOG_CONFIG" \
  44. --log-level "$LOG_LEVEL"
  45. # Standard API
  46. else
  47. export DISPLAY=:99
  48. Xvfb ${DISPLAY} -screen 0 1280x720x24 -ac &
  49. exec uvicorn "room_cal.api:create_app" --factory \
  50. --host "$API_HOST" \
  51. --port "$API_PORT" \
  52. --log-config "$LOG_CONFIG" \
  53. --log-level "$LOG_LEVEL"
  54. fi