デプロイこのページを編集

Deno

スタンドアロンの Deno サーバとしてデプロイするには、ビルトインの deno アダプタを使用します。このアダプタは Deno のネイティブ Deno.serve() API を使用し、エッジ互換の fetch ハンドラとビルド時静的ルートマッピングを提供します。

システムに Deno がインストールされている必要があります:

curl -fsSL https://deno.land/install.sh | sh

追加のパッケージは不要です — アダプタは @lazarv/react-server に組み込まれています。

次に、react-server.config.mjs ファイルにアダプタを追加します:

export default {
  adapter: "deno",
};

オプションを渡してアダプタをカスタマイズできます:

export default {
  adapter: [
    "deno",
    {
      name: "my-app", // アプリケーション名(生成される deno.json で使用)
    },
  ],
};

設定オプション

環境変数

生成されたサーバは実行時に以下の環境変数をサポートします:

Deno アダプタはエッジビルドモードを使用し、サーバ全体を単一のファイルにバンドルします。ビルド時に以下を行います:

  1. サーバコードを .deno/server/.react-server/server/edge.mjs にバンドル
  2. すべての静的アセットを .deno/static/ にコピー
  3. ビルド時静的ルートマップを含む start.mjs スクリプトを生成し、Deno.readFile() で適切な MIME タイプ検出付きの静的ファイル配信を実現
  4. 簡単なデプロイのためのスタートタスク付き deno.json を作成

静的ファイル(HTML、CSS、JS、画像など)はビルド時ルートマップから解決され、サーバハンドラを経由せず直接配信されます。

react-server CLI を使用してアプリケーションをビルドします:

pnpm react-server build [root]

これにより、以下の構造の .deno/ ディレクトリが生成されます:

.deno/
├── start.mjs          # 静的ルートマップ付きエントリーポイント
├── deno.json          # スタートタスク付き Deno 設定
├── static/            # すべての静的アセット
│   ├── assets/        # ハッシュ付きビルドアセット(CSS、JS)
│   ├── client/        # クライアントサイドバンドル
│   └── ...            # 公開ファイル、プリレンダリング HTML
└── server/
    └── .react-server/
        └── server/
            └── edge.mjs  # バンドルされたサーバ

本番サーバを直接起動します:

deno run --allow-net --allow-read --allow-env --allow-sys .deno/start.mjs

または --deploy フラグを使用してビルドと即時起動を行います:

pnpm react-server build [root] --deploy

生成された deno.json のタスクを使用することもできます:

cd .deno
deno task start

Deno アダプタは自己完結型のサーバを生成するため、Deno が動作する場所ならどこでもデプロイできます:

Dockerfile の例

FROM denoland/deno:latest
WORKDIR /app
COPY .deno/ .
EXPOSE 3000
CMD ["deno", "task", "start"]