Node.jsアプリのデプロイ
Zeaburはさまざまな種類のNode.jsプロジェクトをサポートしています:
- ネイティブプロジェクト(NPM/Yarn/PNPM/Bunなどのパッケージマネージャーをサポート)
- Viteでバンドルされたプロジェクト
- Qwik
- Next.js
- Remix
- Nuxt.js
- Umi
- Svelte (Kit)
- Nest.js
- Nue.js
- Express
- Astro
- Waku
- Nue
- Create React App
- vue-cli
- Hexo
- Vitepress
- Astro(静的、SSR)
- Slidev
- Docusaurus
- Solid Start(Node、静的)
Monorepo サポート
Zeabur は pnpm workspace、Yarn Workspace などの 2 つの Monorepo アプローチに基づくほとんどのツールチェーン(Turborepo や Lerna など)を自動的に認識します。
Turborepo の basic
テンプレートを例にとると、その pnpm-workspace.yaml
の内容は次のとおりです:
packages:
- "apps/*"
- "packages/*"
apps
には docs
と web
の 2 つのディレクトリがあります。Zeabur はデフォルトでワークスペースパッケージリストに最初に記載された Node.js アプリケーションをデプロイします。この場合、Zeabur は apps/docs
アプリケーションをデプロイします。apps/web
をデプロイしたい場合は、プロジェクトのルートディレクトリに zbpack.json
ファイルを作成し、次の内容を追加します:
{
"app_dir": "apps/web"
}
または、環境変数 を使用して設定します:
ZBPACK_APP_DIR=apps/web
これで apps/web
アプリケーションがデプロイされます。
アプリケーションが実際にルートディレクトリにあるが、pnpm-workspace.yaml
を使用して React コンポーネント、デザインシステムなどの要素を配置している場合、環境変数 ZBPACK_APP_DIR=/
を使用するか、zbpack.json
に以下を追加できます
{
"app_dir": "/"
}
これにより、Zeabur はルートディレクトリに配置されたアプリケーションをデプロイします。
キャッシュ機能の無効化
デフォルトでは、Zeabur は依存関係のインストール手順を記録して CI/CD の速度を向上させるため、インストールプロセスを再配置します。一般的な Node.js プロジェクトには影響しないはずですが、依存関係のインストール中にプロジェクト内の他のファイルを使用する必要があり、プロジェクトのコンパイルが失敗する場合は、キャッシュ機能を無効にする必要があります。
この機能を無効にするには、プロジェクトのルートディレクトリにzbpack.json
ファイルを作成し、次の内容を追加してください:
{
"cache_dependencies": false
}
または、環境変数 を設定します:
ZBPACK_CACHE_DEPENDENCIES=false
ビルドおよび開始コマンドの変更
プロジェクトのタイプがより特殊な場合(カスタム Monorepo ツールチェーンを使用する場合など)、サービスのビルド (build) および起動 (start) コマンドを指定する必要があります。例えば、frontend
サービスの起動コマンドを pnpm run start:frontend
に変更し、api
サービスのビルドコマンドを pnpm run start:api
に変更します。
これらのコマンドを変更する方法は次の二つがあります。
ファイルを介した変更
zbpack.json
に次の二つの設定を追加してください:
{
"build_command": "<カスタムビルドコマンド>",
"start_command": "<カスタム開始コマンド>"
}
zbpack.json
のデフォルト設定はすべてのデプロイされたサービスに適用されます。異なるサービスごとに異なるコマンドを指定する場合(例: api
とfrontend
という名前のサービスごとに異なるコマンドを使用する場合)、zbpack.[サービス名].json
というファイルを作成する必要があります:
// zbpack.api.json
{
"build_command": "pnpm run build:api",
"start_command": "pnpm run start:api"
}
// zbpack.frontend.json
{
"build_command": "pnpm run build:frontend",
"start_command": "pnpm run start:frontend"
}
設定を適用する優先順位はzbpack.[service name].json
> zbpack.json
です。
環境変数を使用して変更
環境変数 を使用して、ビルドと起動コマンドを設定することもできます:
ZBPACK_BUILD_COMMAND=pnpm run build:api
ZBPACK_START_COMMAND=pnpm run start:api
Node.js バージョンとパッケージマネージャー バージョンの設定
Node.js バージョン
デフォルトでは、Zeabur はプロジェクトをビルドするために最新の LTS バージョンの Node.js を使用します。異なるバージョンを使用したい場合は、package.json
で指定することができます:
{
"engines": {
"node": "18.1.0"
}
}
パッケージマネージャー バージョン
デフォルトでは、Zeabur はプロジェクトの依存関係をインストールするために yarn を使用します。異なるパッケージマネージャーを使用したい場合は、package.json
で指定することができます:
{
"packageManager": "pnpm@8.0.0"
}
静的ウェブサイトのデプロイ
プロジェクトが純粋なフロントエンドウェブページのみを生成する必要がある場合(バックエンドサーバーは不要)、NGINX、Caddy などのウェブサーバーで直接ホスティングすることができます。Zeabur を使用してより軽量な方法でデプロイすることで、リソース使用量とコストを削減できます。
-
まず、ビルドコマンドがどのフォルダに最終的なウェブファイルを生成するかを確認します(一般的には
dist
、build
、またはpublic
フォルダ)。 -
次に、この環境変数を追加して、Zeabur にウェブファイルの場所を伝えます:
ZBPACK_OUTPUT_DIR=dist
または、
zbpack.json
に設定を書き込むこともできます:{ "output_dir": "dist" }
-
これで次回のビルド完了後、Zeabur はリソース効率の良い Caddy を使用してあなたのウェブサイトをホストします。
ウェブスクレイピング
Playwright のサポート
package.json
に playwright-chromium
が宣言されている場合、Zeabur は Playwright を実行するために必要な環境を自動的に準備します。
Playwright は ヘッドレス モードで実行する必要があることに注意してください。通常はデフォルトでそのように設定されています。
Puppeteer のサポート
package.json
に puppeteer
が宣言されている場合、Zeabur は Puppeteer を実行するために必要な環境を自動的に準備します。
Puppeteer は ヘッドレス モードで実行する必要があることに注意してください。通常はデフォルトでそのように設定されています。
追加の注意事項
-
リッスンするポートは
process.env.PORT
を使用する必要があります。例:
const port = process.env.PORT || 3000 // 代わりに const port = 3000
-
ランタイムとしてnodemonを使用しないでください。本番環境では、一般的な
node
コマンドでコマンドを実行してください。例えば、
package.json
内で:{ "scripts": { "start": "node server.js" // 代わりに "start": "nodemon server.js" } }