jpskill.com
🛠️ 開発・MCP コミュニティ

railway-deploy

RailwayのCLIを使って、デプロイや状態確認、サービス管理、環境変数の設定、ログ確認など、Railwayに関する様々な操作を実行し、プロジェクトの立ち上げから本番環境の監視まで、デプロイの全工程をサポートするSkill。

📜 元の英語説明(参考)

Manage Railway deployments using the CLI. Use when a user asks to deploy to Railway, check deployment status, manage Railway services, set environment variables on Railway, view Railway logs, link a Railway project, add a database on Railway, scale Railway services, manage Railway environments, rollback a Railway deployment, or run commands with Railway env vars. Covers the full deploy lifecycle from project setup to production monitoring.

🇯🇵 日本人クリエイター向け解説

一言でいうと

RailwayのCLIを使って、デプロイや状態確認、サービス管理、環境変数の設定、ログ確認など、Railwayに関する様々な操作を実行し、プロジェクトの立ち上げから本番環境の監視まで、デプロイの全工程をサポートするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o railway-deploy.zip https://jpskill.com/download/15315.zip && unzip -o railway-deploy.zip && rm railway-deploy.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15315.zip -OutFile "$d\railway-deploy.zip"; Expand-Archive "$d\railway-deploy.zip" -DestinationPath $d -Force; ri "$d\railway-deploy.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して railway-deploy.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → railway-deploy フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Railway Deploy

概要

CLIを使用してRailway上のアプリケーションをデプロイ、管理、および監視します。プロジェクトのセットアップ、サービス構成、環境変数、デプロイ、スケーリング、ログ、およびデバッグといった、ライフサイクル全体を網羅します。

手順

タスク A: プロジェクトのセットアップとリンク

まず、CLIがインストールされていることを確認します。railwayが見つからない場合は、インストールします。

npm i -g @railway/cli   # または: brew install railway

すでにプロジェクトにリンクされているかどうかを確認します。

railway status

リンクされていない場合は、新しいプロジェクトを作成するか、既存のプロジェクトにリンクします。

railway init    # 新しいプロジェクトを作成
railway link    # 既存のプロジェクトにリンク

リンク後、railway statusでプロジェクト、サービス、および環境のコンテキストを確認します。

CI/CDまたはヘッドレス環境の場合は、トークン認証を使用します。

RAILWAY_TOKEN=xxx railway up       # プロジェクトスコープのトークン
RAILWAY_API_TOKEN=xxx railway up   # アカウントスコープのトークン

タスク B: デプロイ

# 現在のディレクトリをデプロイし、ログをストリーム
railway up

# ログを待たずにデプロイ
railway up --detach

# 特定のサービスをターゲットにする
railway up -s my-service

# 特定の環境にデプロイ
railway up -e staging

最新のデプロイメントを削除するには:

railway down

最新のデプロイメントを再デプロイするには(同じコード、新しいビルド):

railway redeploy

再構築せずにサービスを再起動するには:

railway restart

タスク C: サービスとリソースの管理

# インタラクティブにサービスを追加
railway add

# データベースを追加
railway add --database postgres   # 他にも: mysql, redis, mongo

# GitHubリポジトリからサービスを追加
railway add --repo user/repo

# リンクされたサービスコンテキストを切り替え
railway service

# サービスをスケール
railway scale

# Railwayサブドメインを生成するか、カスタムドメインを追加
railway domain
railway domain example.com

# 永続ボリュームを管理
railway volume list
railway volume add
railway volume delete

# プロジェクト全体を削除
railway delete

タスク D: 環境変数

# 現在のサービス/環境のすべての変数をリスト
railway variable list

# 変数を設定
railway variable set DATABASE_URL=postgres://user:pass@host:5432/db

# 複数の変数を設定
railway variable set KEY1=value1 KEY2=value2

# 変数を削除
railway variable delete SECRET_KEY

タスク E: 環境

# インタラクティブに環境を切り替え
railway environment

# 新しい環境を作成
railway environment new staging

# 環境を削除
railway environment delete dev

# 特定の環境にデプロイ
railway up -e production

タスク F: ログとデバッグ

# ライブログをストリーム
railway logs

# ビルドログを表示
railway logs --build

# 最後のN行を表示
railway logs -n 100

# 実行中のコンテナにSSH接続
railway ssh

# データベースシェルに接続 (例: psql, mysql, redis-cli)
railway connect

タスク G: ローカル開発

# Railwayの環境変数を注入してコマンドを実行
railway run npm start
railway run python manage.py migrate

# Railwayの環境変数を使用してインタラクティブシェルを開く
railway shell

例 1: Node.jsアプリをゼロからデプロイ

ユーザーリクエスト: "Node.jsアプリをRailwayにデプロイしたい"

実行されたアクション:

$ railway login
> Opening browser for authentication...
> Logged in as andrey@example.com

$ railway init
> Created project "my-node-app" in workspace "Personal"

$ railway up
> Uploading 2.3 MB...
> Build started
> Installing dependencies...
> Build completed in 34s
> Deployment live at my-node-app.up.railway.app

$ railway domain
> Service domain: my-node-app.up.railway.app

例 2: Postgresデータベースを追加して接続

ユーザーリクエスト: "Railwayプロジェクトにデータベースを追加して設定したい"

実行されたアクション:

$ railway status
> Project: my-node-app
> Service: web
> Environment: production

$ railway add --database postgres
> Added PostgreSQL service to project

# DATABASE_URLは自動的に注入されます。確認:
$ railway variable list
> DATABASE_URL=postgres://railway:abc123@host:5432/railway
> PGHOST=host
> PGPORT=5432
> ...

# Railwayの環境変数を使用してマイグレーションを実行
$ railway run npx prisma migrate deploy
> Applying migrations...
> 3 migrations applied successfully

$ railway redeploy
> Redeploying web service...
> Deployment live

例 3: 失敗したデプロイをデバッグ

ユーザーリクエスト: "Railwayのデプロイがクラッシュしています。デバッグを手伝ってください"

実行されたアクション:

$ railway status
> Project: my-api
> Service: web
> Environment: production

# まずビルドログを確認
$ railway logs --build
> Step 4/8: RUN npm ci
> npm ERR! Could not resolve dependency: peer express@"^4.0.0"

# ビルドは成功したが、ランタイムが失敗する場合は、ランタイムログを確認
$ railway logs -n 50
> Error: connect ECONNREFUSED 127.0.0.1:5432

# 変数が設定されていることを確認
$ railway variable list
> DATABASE_URL=postgres://...@localhost:5432/mydb  # バグ: localhostを使用

# 修正: Railwayが提供するデータベースホストを指すようにする
$ railway variable set DATABASE_URL=postgres://user:pass@railway-db-host:5432/mydb

$ railway redeploy
> Redeploying...
> Deployment live

タスク H: ヘルスチェックと自動ロールバック

デプロイ後、デプロイが完了したと見なす前に、サービスが正常であることを確認します。異常な場合は、前のデプロイメントにロールバックします。

# デプロイして完了を待つ
$ railway up --detach

# ヘルスチェックループ — サービスが応答することを確認
HEALTH_URL="https://your-app.railway.app/api/health"
TIMEOUT=60
DEADLINE=$((SECONDS + TIMEOUT))
HEALTHY=false

while [ $SECONDS -lt $DEADLINE ]; do
  STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" 2>/dev/null || echo "000")
  if [ "$STATUS" = "200" ]; then
    HEALTHY=true
    break
  fi
  echo "Waiting for healthy response... (status: $STATUS)"
  sleep 3
done

if [ "$HEALTHY" = true ]; then
  echo "✅ Deployment healthy!"
else
  echo "❌ Health check failed! Rolling back..."
  railway rollback
  echo "⏪ Rolled back to previous deployment"
fi

**自動デプロイスクリプト

(原文がここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Railway Deploy

Overview

Deploy, manage, and monitor applications on Railway using the CLI. Covers the full lifecycle: project setup, service configuration, environment variables, deployments, scaling, logs, and debugging.

Instructions

Task A: Project Setup & Linking

First verify the CLI is installed. If railway is not found, install it:

npm i -g @railway/cli   # or: brew install railway

Check if already linked to a project:

railway status

If not linked, either create a new project or link to an existing one:

railway init    # Create a new project
railway link    # Link to an existing project

After linking, confirm with railway status to verify project, service, and environment context.

For CI/CD or headless environments, use token auth:

RAILWAY_TOKEN=xxx railway up       # Project-scoped token
RAILWAY_API_TOKEN=xxx railway up   # Account-scoped token

Task B: Deploy

# Deploy current directory and stream logs
railway up

# Deploy without waiting for logs
railway up --detach

# Target a specific service
railway up -s my-service

# Deploy to a specific environment
railway up -e staging

To remove the latest deployment:

railway down

To redeploy the latest deployment (same code, fresh build):

railway redeploy

To restart a service without rebuilding:

railway restart

Task C: Manage Services & Resources

# Add a service interactively
railway add

# Add a database
railway add --database postgres   # also: mysql, redis, mongo

# Add a service from a GitHub repo
railway add --repo user/repo

# Switch linked service context
railway service

# Scale a service
railway scale

# Generate a Railway subdomain or add a custom domain
railway domain
railway domain example.com

# Manage persistent volumes
railway volume list
railway volume add
railway volume delete

# Delete the entire project
railway delete

Task D: Environment Variables

# List all variables for current service/environment
railway variable list

# Set a variable
railway variable set DATABASE_URL=postgres://user:pass@host:5432/db

# Set multiple variables
railway variable set KEY1=value1 KEY2=value2

# Delete a variable
railway variable delete SECRET_KEY

Task E: Environments

# Switch environment interactively
railway environment

# Create a new environment
railway environment new staging

# Delete an environment
railway environment delete dev

# Deploy to a specific environment
railway up -e production

Task F: Logs & Debugging

# Stream live logs
railway logs

# View build logs
railway logs --build

# View last N lines
railway logs -n 100

# SSH into the running container
railway ssh

# Connect to a database shell (e.g., psql, mysql, redis-cli)
railway connect

Task G: Local Development

# Run a command with Railway environment variables injected
railway run npm start
railway run python manage.py migrate

# Open an interactive shell with Railway env vars
railway shell

Examples

Example 1: Deploy a Node.js app from scratch

User request: "Deploy my Node.js app to Railway"

Actions taken:

$ railway login
> Opening browser for authentication...
> Logged in as andrey@example.com

$ railway init
> Created project "my-node-app" in workspace "Personal"

$ railway up
> Uploading 2.3 MB...
> Build started
> Installing dependencies...
> Build completed in 34s
> Deployment live at my-node-app.up.railway.app

$ railway domain
> Service domain: my-node-app.up.railway.app

Example 2: Add a Postgres database and wire it up

User request: "Add a database to my Railway project and set it up"

Actions taken:

$ railway status
> Project: my-node-app
> Service: web
> Environment: production

$ railway add --database postgres
> Added PostgreSQL service to project

# The DATABASE_URL is automatically injected. Verify:
$ railway variable list
> DATABASE_URL=postgres://railway:abc123@host:5432/railway
> PGHOST=host
> PGPORT=5432
> ...

# Run migrations using Railway env vars
$ railway run npx prisma migrate deploy
> Applying migrations...
> 3 migrations applied successfully

$ railway redeploy
> Redeploying web service...
> Deployment live

Example 3: Debug a failing deployment

User request: "My Railway deployment is crashing, help me debug it"

Actions taken:

$ railway status
> Project: my-api
> Service: web
> Environment: production

# Check build logs first
$ railway logs --build
> Step 4/8: RUN npm ci
> npm ERR! Could not resolve dependency: peer express@"^4.0.0"

# If build passes but runtime fails, check runtime logs
$ railway logs -n 50
> Error: connect ECONNREFUSED 127.0.0.1:5432

# Verify variables are set
$ railway variable list
> DATABASE_URL=postgres://...@localhost:5432/mydb  # BUG: using localhost

# Fix: point to the Railway-provided database host
$ railway variable set DATABASE_URL=postgres://user:pass@railway-db-host:5432/mydb

$ railway redeploy
> Redeploying...
> Deployment live

Task H: Health Checks and Auto-Rollback

After deploying, verify the service is healthy before considering the deploy complete. If unhealthy, roll back to the previous deployment.

# Deploy and wait for completion
$ railway up --detach

# Health check loop — verify the service responds
HEALTH_URL="https://your-app.railway.app/api/health"
TIMEOUT=60
DEADLINE=$((SECONDS + TIMEOUT))
HEALTHY=false

while [ $SECONDS -lt $DEADLINE ]; do
  STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" 2>/dev/null || echo "000")
  if [ "$STATUS" = "200" ]; then
    HEALTHY=true
    break
  fi
  echo "Waiting for healthy response... (status: $STATUS)"
  sleep 3
done

if [ "$HEALTHY" = true ]; then
  echo "✅ Deployment healthy!"
else
  echo "❌ Health check failed! Rolling back..."
  railway rollback
  echo "⏪ Rolled back to previous deployment"
fi

Automated deploy script with health verification:

# deploy_railway.py — Deploy with health check and auto-rollback
import subprocess
import time
import httpx

def deploy_with_health_check(health_url, timeout=60):
    """Deploy to Railway, verify health, rollback on failure."""
    print("🚀 Deploying to Railway...")
    subprocess.run(["railway", "up", "--detach"], check=True)

    print(f"🏥 Health checking {health_url}...")
    deadline = time.time() + timeout
    while time.time() < deadline:
        try:
            r = httpx.get(health_url, timeout=5)
            if r.status_code == 200:
                print("✅ Healthy!")
                return True
        except httpx.RequestError:
            pass
        time.sleep(3)

    print("❌ Unhealthy! Rolling back...")
    subprocess.run(["railway", "rollback"], check=True)
    print("⏪ Rolled back")
    return False

Guidelines

  • Always run railway status first to confirm project, service, and environment context before making changes.
  • Use railway up --detach in CI/CD pipelines to avoid blocking on log output.
  • Use RAILWAY_TOKEN for project-scoped CI/CD auth and RAILWAY_API_TOKEN for account-level operations.
  • Use -s service-name and -e environment-name flags when managing multi-service projects to avoid acting on the wrong target.
  • Use railway run to execute one-off commands (migrations, seeds) with production env vars without deploying.
  • If a deployment fails, check build logs (railway logs --build) first, then runtime logs (railway logs).
  • Use railway connect to get a database shell directly without needing connection strings locally.
  • Add --json to any command for machine-readable output in scripts.
  • Use railway variable set to update env vars, then railway redeploy to pick up the changes.
  • Use railway environment new to create staging/preview environments that mirror production config.
  • If railway command is not found, install via npm i -g @railway/cli or brew install railway.
  • If railway login fails or times out, use railway login --browserless for headless/SSH environments.