【Railway】Rust Axumをデプロイする方法
最終更新日:
阿部 隼也
AIイノベーションズ 代表取締役社長 | x.com/ai_abe_shunya
Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)
Rust Axumアプリをデプロイする方法
Axum は Rust 製の非同期 Web フレームワークで、tokio と hyper 上に構築されています。安全性とパフォーマンスを両立しつつ、モジュール化された設計で高い生産性を実現します。
本記事では、Axum アプリを Railway にデプロイする 4 つの方法を紹介します。
- テンプレートからワンクリックデプロイ
- GitHub リポジトリからデプロイ
- Railway CLI からデプロイ
- Dockerfile を使ったデプロイ
どの方法を選ぶべき?
- 初めてで最短で試したい: テンプレート
- 手元から素早く都度デプロイしたい: CLI
- プッシュで自動デプロイしたい: GitHub 連携
- 既存の Docker イメージ/複雑な依存がある: Dockerfile
Axum アプリを作成する
既にプロジェクトがある場合はこの章をスキップしてください。
cargo new helloworld --bin
cd helloworld
cargo add axum
cargo add tokio --features full次に src/main.rs を以下のように書き換えます。
use axum::{ routing::get, Router };
use std::net::SocketAddr;
#[tokio::main]
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello World, from Axum!" }));
let port: u16 = std::env::var("PORT").unwrap_or_else(|_| "3000".into()).parse().unwrap();
let addr = SocketAddr::from(([0, 0, 0, 0], port));
println!("🚀 Axum app listening on {}", addr);
axum::Server::bind(&addr).serve(app.into_make_service()).await.unwrap();
}Railway はコンテナのPORTを自動で割り当てます。上記のように環境変数から取得し、0.0.0.0で待ち受ける実装にしておくと安心です。
ローカルで実行
cargo runブラウザで http://localhost:3000 を開き、“Hello World, from Axum!” と表示されれば準備完了です。
Railway へのデプロイ方法
テンプレートからワンクリックデプロイ
Railway テンプレートマーケットプレイスに Axum テンプレートがあります。ワンクリックでインフラ設定からビルドまで自動化されます。
CLI からデプロイ
# CLI が未インストールなら
npm i -g @railway/clirailway init # プロジェクト初期化
railway up # デプロイ
railway domain # 公開 URL 発行CLI はプロジェクトを圧縮してアップロードし、実行ログをリアルタイムに確認できます。
GitHub リポジトリからデプロイ

- Railway ダッシュボード → New Project → Deploy from GitHub repo
- リポジトリ選択 → Deploy
- デプロイ完了後、Settings → Networking で Generate Domain をクリック
Dockerfile を使ったデプロイ
以下は cargo-chef を活用したマルチステージビルド例です。
FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef
WORKDIR /app
FROM chef AS planner
COPY . .
RUN cargo chef prepare --recipe-path recipe.json
FROM chef AS builder
COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
COPY . .
RUN cargo build --release
FROM debian:bullseye-slim
WORKDIR /app
COPY --from=builder /app/target/release/helloworld ./helloworld
CMD ["./helloworld"]次のステップ
- データベースとの連携 –
sqlxを使って Postgres に接続 - 観測性の向上 –
tracingと OpenTelemetry で分散トレースを導入 - 環境変数/Secrets の管理 – Railway の Variables に
DATABASE_URLなどを登録
Rust × Axum × Railway で安全かつ高速なバックエンドを構築しましょう!
Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)
ブログ