mcpField
R
railway

railway

github.com/hoodiniクラウド・DevOps291135 回インストール2 日前に更新
リポジトリ

railway について

Railwayでアプリケーションをデプロイ、管理するためのスキルです。CLI設定、データベース、ストレージ、ネットワーク、定期実行の設定を扱います。

主な機能

  1. 01ビルドとデプロイの設定
  2. 02環境変数の設定
  3. 03PostgreSQL、Redis、MySQLの追加
  4. 04プライベートネットワークとボリュームの管理
  5. 05Cronジョブとヘルスチェックの設定

活用シーン

  1. 01Railway CLIでアプリをデプロイ
  2. 02複数サービスのプロジェクトを設定
  3. 03サービスに永続ストレージを接続

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hoodini/ai-agents-skills --skill railway

インストール後、Claude Code で/railwayを入力して読み込まれたか確認します。

詳細

Railway のデプロイ

Railway のプラットフォームでアプリケーションをデプロイ、管理します。

クイックスタート

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

# Login
railway login

# Initialize project
railway init

# Deploy
railway up

railway.toml の設定

[build]
builder = "nixpacks"
buildCommand = "npm run build"

[deploy]
startCommand = "npm start"
healthcheckPath = "/health"
healthcheckTimeout = 300
restartPolicyType = "on_failure"
restartPolicyMaxRetries = 3

[service]
internalPort = 3000

Nixpacks の設定

# nixpacks.toml
[phases.setup]
nixPkgs = ["nodejs-18_x", "python311"]

[phases.install]
cmds = ["npm ci"]

[phases.build]
cmds = ["npm run build"]

[start]
cmd = "npm start"

環境変数

# Set variable
railway variables set DATABASE_URL="postgres://..."

# Set from file
railway variables set < .env

# Link to service
railway service
railway variables set API_KEY="secret"

データベースサービス

PostgreSQL
# Add PostgreSQL
railway add -d postgres

# Get connection string
railway variables get DATABASE_URL
Redis
railway add -d redis
# Access via REDIS_URL
MySQL
railway add -d mysql
# Access via MYSQL_URL

プライベートネットワーク

# Services can communicate via internal DNS
# Format: ${{service-name}}.railway.internal

# Example: API calling database service
DATABASE_HOST: ${{postgres.railway.internal}}
DATABASE_PORT: 5432

ボリューム(永続ストレージ)

# Create volume
railway volume create my-data

# Mount in service
railway volume attach my-data:/app/data

コード内:

// Data persists across deploys
const dataPath = '/app/data';
fs.writeFileSync(`${dataPath}/file.json`, JSON.stringify(data));

Cron ジョブ

# railway.toml
[deploy]
startCommand = "node cron.js"
cronSchedule = "0 */6 * * *"  # Every 6 hours

マルチサービス構成

my-project/
├── api/
│   ├── railway.toml
│   └── ...
├── worker/
│   ├── railway.toml
│   └── ...
└── frontend/
    ├── railway.toml
    └── ...

それぞれをデプロイします:

cd api && railway up
cd ../worker && railway up
cd ../frontend && railway up

Dockerfile によるデプロイ

FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .

EXPOSE 3000
CMD ["npm", "start"]
# railway.toml
[build]
builder = "dockerfile"
dockerfilePath = "./Dockerfile"

ヘルスチェック

// Express health endpoint
app.get('/health', (req, res) => {
  res.status(200).json({ 
    status: 'healthy',
    timestamp: new Date().toISOString()
  });
});
# railway.toml
[deploy]
healthcheckPath = "/health"
healthcheckTimeout = 100

リソース

コメント