Spaces:
Sleeping
Sleeping
fixing https issue on hf
Browse files- Dockerfile +4 -4
- backend/main.py +27 -1
Dockerfile
CHANGED
|
@@ -40,10 +40,10 @@ RUN apt-get update && apt-get install -y \
|
|
| 40 |
|
| 41 |
# Set up user environment
|
| 42 |
ENV HOME=/home/user \
|
| 43 |
-
PATH=/home/user/app/.venv/bin:$PATH
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
|
| 48 |
# Verify dependencies are available in the final image
|
| 49 |
RUN python -c "import numpy; print(f'NumPy version: {numpy.__version__}')" && \
|
|
|
|
| 40 |
|
| 41 |
# Set up user environment
|
| 42 |
ENV HOME=/home/user \
|
| 43 |
+
PATH=/home/user/app/.venv/bin:$PATH \
|
| 44 |
+
UVICORN_WS_PROTOCOL=websockets \
|
| 45 |
+
FORWARDED_ALLOW_IPS="*" \
|
| 46 |
+
HTTPTOOLS_LOG_DEBUG=1
|
| 47 |
|
| 48 |
# Verify dependencies are available in the final image
|
| 49 |
RUN python -c "import numpy; print(f'NumPy version: {numpy.__version__}')" && \
|
backend/main.py
CHANGED
|
@@ -36,6 +36,22 @@ load_dotenv()
|
|
| 36 |
|
| 37 |
app = FastAPI()
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
# Configure CORS - allow all origins explicitly for development
|
| 40 |
app.add_middleware(
|
| 41 |
CORSMiddleware,
|
|
@@ -302,4 +318,14 @@ if frontend_path.exists():
|
|
| 302 |
return FileResponse(str(frontend_path / "index.html"))
|
| 303 |
|
| 304 |
if __name__ == "__main__":
|
| 305 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
app = FastAPI()
|
| 38 |
|
| 39 |
+
# For deployment on Hugging Face Spaces, add a middleware to handle HTTPS
|
| 40 |
+
from starlette.middleware.base import BaseHTTPMiddleware
|
| 41 |
+
|
| 42 |
+
class HTTPSRedirectMiddleware(BaseHTTPMiddleware):
|
| 43 |
+
async def dispatch(self, request, call_next):
|
| 44 |
+
# Check for X-Forwarded-Proto header and ensure it's HTTPS
|
| 45 |
+
if request.headers.get("X-Forwarded-Proto") == "http":
|
| 46 |
+
logger.info("Redirecting to HTTPS")
|
| 47 |
+
url = request.url.replace(scheme="https")
|
| 48 |
+
return RedirectResponse(url=str(url), status_code=307)
|
| 49 |
+
return await call_next(request)
|
| 50 |
+
|
| 51 |
+
# Add the HTTPS middleware
|
| 52 |
+
from starlette.responses import RedirectResponse
|
| 53 |
+
app.add_middleware(HTTPSRedirectMiddleware)
|
| 54 |
+
|
| 55 |
# Configure CORS - allow all origins explicitly for development
|
| 56 |
app.add_middleware(
|
| 57 |
CORSMiddleware,
|
|
|
|
| 318 |
return FileResponse(str(frontend_path / "index.html"))
|
| 319 |
|
| 320 |
if __name__ == "__main__":
|
| 321 |
+
# Get the port from environment variable or use default
|
| 322 |
+
port = int(os.environ.get("PORT", 8000))
|
| 323 |
+
|
| 324 |
+
# For Hugging Face Spaces deployment
|
| 325 |
+
uvicorn.run(
|
| 326 |
+
"main:app",
|
| 327 |
+
host="0.0.0.0",
|
| 328 |
+
port=port,
|
| 329 |
+
proxy_headers=True, # This tells uvicorn to trust the X-Forwarded-* headers
|
| 330 |
+
forwarded_allow_ips="*" # Allow forwarded requests from any IP
|
| 331 |
+
)
|