entrypoint.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. Xvfb :99 -screen 0 1280x720x24 -ac &
  18. export DISPLAY=:99
  19. SERVICE="${1:-api}"
  20. # MCP
  21. if [ "$SERVICE" = "mcp" ]; then
  22. : "${FASTMCP_HOST:=0.0.0.0}"
  23. : "${FASTMCP_PORT:=8001}"
  24. : "${FASTMCP_LOG_LEVEL:=INFO}"
  25. : "${FASTMCP_ENABLE_RICH_LOGGING:=false}"
  26. : "${FASTMCP_ENABLE_RICH_TRACEBACKS:=false}"
  27. export FASTMCP_TRANSPORT=http
  28. export FASTMCP_HOST FASTMCP_PORT FASTMCP_LOG_LEVEL
  29. export FASTMCP_ENABLE_RICH_LOGGING FASTMCP_ENABLE_RICH_TRACEBACKS
  30. exec room-mcp
  31. fi
  32. # Shared API config
  33. : "${API_HOST:=0.0.0.0}"
  34. : "${API_PORT:=8000}"
  35. : "${LOG_LEVEL:=info}"
  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. exec uvicorn "room_cal.api:create_app" --factory \
  48. --host "$API_HOST" \
  49. --port "$API_PORT" \
  50. --log-config "$LOG_CONFIG" \
  51. --log-level "$LOG_LEVEL"
  52. fi