skills/cpfiffer/central/deploying-to-railway

deploying-to-railway

SKILL.md

Deploying to Railway

Guide for deploying Python services to Railway.

Prerequisites

# Install Railway CLI
npm install -g @railway/cli

# Login
railway login

Basic Workflow

1. Link Project

cd /path/to/service
railway link
# Select workspace and project (or create new)

2. Add PostgreSQL (if needed)

railway add
# Select: Database → Postgres

IMPORTANT: Standard Postgres does NOT have pgvector. For vector search:

3. Set Environment Variables

railway variables set KEY="value"

# Reference another service's variable:
railway variables set 'DATABASE_URL=${{Postgres.DATABASE_URL}}'
railway variables set 'DATABASE_URL=${{pgvector.DATABASE_URL}}'

4. Deploy

railway up --detach

5. Get Domain

railway domain
# Returns: https://service-production.up.railway.app

Multi-Service Pattern (API + Worker)

Deploy API Service

railway link  # Link to main service
railway up --detach

Add Worker Service

railway add --service worker
railway service link worker
railway variables set 'DATABASE_URL=${{pgvector.DATABASE_URL}}'
railway variables set OPENAI_API_KEY="$OPENAI_API_KEY"
# Set start command in dashboard or railway.toml
railway up --detach

Gotchas

  1. pgvector not available - Use pgvector template, not standard Postgres
  2. Interactive prompts - Some commands need interactive mode (run manually)
  3. Variable references - Use ${{ServiceName.VARIABLE}} syntax
  4. Dockerfile required - For custom Python services, include Dockerfile
  5. Procfile - Railway can use Procfile for multi-process apps

Useful Commands

railway status          # Current project/service
railway variables       # List environment variables
railway logs            # View service logs
railway service status  # Deployment status
railway redeploy --yes  # Force redeploy

Example Dockerfile

FROM python:3.11-slim

WORKDIR /app

RUN apt-get update && apt-get install -y libpq-dev gcc && rm -rf /var/lib/apt/lists/*

COPY pyproject.toml ./
COPY myapp/ ./myapp/

RUN pip install --no-cache-dir .

CMD ["gunicorn", "--bind", "0.0.0.0:8080", "--workers", "2", "myapp.app:app"]
Weekly Installs
13
GitHub Stars
18
First Seen
Feb 13, 2026
Installed on
opencode13
gemini-cli13
github-copilot13
amp13
codex13
kimi-cli13