diff --git a/salesflow-saas/backend/Dockerfile b/salesflow-saas/backend/Dockerfile index 8432bdc5..89f7feeb 100644 --- a/salesflow-saas/backend/Dockerfile +++ b/salesflow-saas/backend/Dockerfile @@ -12,9 +12,7 @@ ENV PATH="/opt/venv/bin:$PATH" COPY requirements.txt ./ -# Install CPU-only torch first (saves ~3 GB vs CUDA version) RUN pip install --no-cache-dir --upgrade pip setuptools wheel \ - && pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu \ && pip install --no-cache-dir -r requirements.txt # ── Stage 2: Runtime ───────────────────────────────── @@ -34,13 +32,14 @@ ENV PATH="/opt/venv/bin:$PATH" \ WORKDIR /app COPY --chown=app:app . . +RUN chmod +x start.sh USER app EXPOSE 8000 -HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ - CMD curl -f http://localhost:8000/api/v1/health || exit 1 +HEALTHCHECK --interval=30s --timeout=10s --start-period=90s --retries=5 \ + CMD curl -f http://localhost:${PORT:-8000}/health || exit 1 ENTRYPOINT ["tini", "--"] -CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "2"] +CMD ["./start.sh"] diff --git a/salesflow-saas/backend/railway.toml b/salesflow-saas/backend/railway.toml index 66a8bbd5..fde8d883 100644 --- a/salesflow-saas/backend/railway.toml +++ b/salesflow-saas/backend/railway.toml @@ -2,8 +2,7 @@ dockerfilePath = "Dockerfile" [deploy] -healthcheckPath = "/api/v1/health" +healthcheckPath = "/health" healthcheckTimeout = 120 -startCommand = "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8000} --workers 2" restartPolicyType = "ON_FAILURE" restartPolicyMaxRetries = 3 diff --git a/salesflow-saas/backend/start.sh b/salesflow-saas/backend/start.sh new file mode 100755 index 00000000..da2b4fad --- /dev/null +++ b/salesflow-saas/backend/start.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# start.sh — Railway-compatible start script +# Uses $PORT from Railway (default 8000 if not set) +exec uvicorn app.main:app --host 0.0.0.0 --port "${PORT:-8000}" --workers 2