railway について
Railwayでアプリケーションをデプロイ、管理するためのスキルです。CLI設定、データベース、ストレージ、ネットワーク、定期実行の設定を扱います。
主な機能
- 01ビルドとデプロイの設定
- 02環境変数の設定
- 03PostgreSQL、Redis、MySQLの追加
- 04プライベートネットワークとボリュームの管理
- 05Cronジョブとヘルスチェックの設定
活用シーン
- 01Railway CLIでアプリをデプロイ
- 02複数サービスのプロジェクトを設定
- 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
リソース
- Railway のドキュメント:https://docs.railway.app
- Railway CLI:https://docs.railway.app/develop/cli
コメント
Markdown 対応