mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 09:37:55 -05:00
Fix Railway deployment for monorepo as single web service
This commit fixes the Railway build failure by: 1. **Root requirements.txt**: Added root-level requirements.txt that references backend/requirements.txt, enabling Railway's Nixpacks to auto-detect Python project and install dependencies correctly. Fixes "pip: not found" error. 2. **backend/__init__.py**: Created package init file to make backend a proper Python package, allowing uvicorn to import backend.app.main. 3. **railway.toml**: Simplified configuration for single-service monorepo deployment: - Uses NIXPACKS builder (auto-detects Python) - Starts with: uvicorn backend.app.main:app --host 0.0.0.0 --port $PORT - Health check at /health - Configured for app.blackroad.systems deployment Technical details: - Backend entrypoint: backend/app/main.py:app (FastAPI) - Health endpoint: /health returns JSON with service status - Frontend: BR-95 desktop UI served at / from backend/static/index.html - API health: /api/health provides comprehensive integration status Deployment target: - Railway project: gregarious-wonder - Service: BlackRoad-Operating-System - Domain: app.blackroad.systems
This commit is contained in:
81
railway.toml
81
railway.toml
@@ -1,80 +1,25 @@
|
||||
# ==============================================================================
|
||||
# ⚠️ CRITICAL WARNING - DO NOT USE THIS CONFIG IN PRODUCTION RAILWAY ⚠️
|
||||
# BlackRoad Operating System - Railway Configuration
|
||||
# ==============================================================================
|
||||
#
|
||||
# This railway.toml is for LOCAL DEVELOPMENT AND TESTING ONLY.
|
||||
# This configuration deploys the monorepo as a SINGLE web service to Railway.
|
||||
#
|
||||
# ❌ DO NOT add "BlackRoad-Operating-System" as a Railway service
|
||||
# ❌ DO NOT deploy this monorepo to production Railway environments
|
||||
# ❌ DO NOT add this repo to service configurations or env vars
|
||||
# Service: BlackRoad-Operating-System
|
||||
# Project: gregarious-wonder
|
||||
# Domain: app.blackroad.systems
|
||||
#
|
||||
# ✅ CORRECT DEPLOYMENT MODEL:
|
||||
# - This repo is the SOURCE OF TRUTH (orchestration/sync only)
|
||||
# - Deploy ONLY the satellite repos to Railway:
|
||||
# • blackroad-os-core (from BlackRoad-OS/blackroad-os-core)
|
||||
# • blackroad-os-api (from BlackRoad-OS/blackroad-os-api)
|
||||
# • blackroad-os-operator (from BlackRoad-OS/blackroad-os-operator)
|
||||
# • blackroad-os-prism-console (from BlackRoad-OS/blackroad-os-prism-console)
|
||||
# • blackroad-os-docs (from BlackRoad-OS/blackroad-os-docs)
|
||||
# This is a temporary configuration. The long-term architecture uses satellite
|
||||
# repos (see DEPLOYMENT_ARCHITECTURE.md), but for now we're deploying the
|
||||
# monorepo directly to get the BR-95 desktop UI online.
|
||||
#
|
||||
# WHY THIS MATTERS:
|
||||
# - Adding the monorepo to Railway will create circular deploy loops
|
||||
# - Environment variables will break (wrong service URLs)
|
||||
# - Cloudflare routing will fail
|
||||
# - Service dependencies will be misconfigured
|
||||
#
|
||||
# See: docs/os/monorepo-sync.md and DEPLOYMENT_ARCHITECTURE.md
|
||||
# ==============================================================================
|
||||
|
||||
# BlackRoad OS Monorepo - Railway Configuration
|
||||
# This configures multiple services from a single repository FOR LOCAL DEV ONLY
|
||||
|
||||
# Backend (Core API)
|
||||
[[services]]
|
||||
name = "blackroad-backend"
|
||||
source = "backend"
|
||||
|
||||
[services.build]
|
||||
builder = "DOCKERFILE"
|
||||
dockerfilePath = "backend/Dockerfile"
|
||||
|
||||
[services.deploy]
|
||||
numReplicas = 1
|
||||
sleepApplication = false
|
||||
restartPolicyType = "ON_FAILURE"
|
||||
restartPolicyMaxRetries = 10
|
||||
|
||||
[services.healthcheck]
|
||||
path = "/health"
|
||||
timeout = 10
|
||||
|
||||
[[services.env]]
|
||||
name = "ENVIRONMENT"
|
||||
value = "production"
|
||||
|
||||
[[services.env]]
|
||||
name = "DEBUG"
|
||||
value = "False"
|
||||
|
||||
# Operator Engine (Job Scheduler & GitHub Automation)
|
||||
[[services]]
|
||||
name = "blackroad-operator"
|
||||
source = "operator_engine"
|
||||
|
||||
[services.build]
|
||||
[build]
|
||||
builder = "NIXPACKS"
|
||||
|
||||
[services.deploy]
|
||||
startCommand = "uvicorn operator_engine.server:app --host 0.0.0.0 --port $PORT"
|
||||
numReplicas = 1
|
||||
sleepApplication = false
|
||||
[deploy]
|
||||
startCommand = "uvicorn backend.app.main:app --host 0.0.0.0 --port $PORT"
|
||||
healthcheckPath = "/health"
|
||||
healthcheckTimeout = 100
|
||||
restartPolicyType = "ON_FAILURE"
|
||||
restartPolicyMaxRetries = 10
|
||||
|
||||
[services.healthcheck]
|
||||
path = "/health"
|
||||
timeout = 10
|
||||
|
||||
[[services.env]]
|
||||
name = "ENVIRONMENT"
|
||||
value = "production"
|
||||
|
||||
Reference in New Issue
Block a user