🤫
[bun]PrismaをBunで使えない
発生した問題
ランタイム、パッケージマネージャにYarnの3系を使用していたのだが、動作が遅かったりすることがあり、高速化のためにBunに切り替えたものの、bun run prisma generateを実行するとエラーになった。
環境
- Docker version 27.5.1, build 9f9e405
- Mac OS 15.3.1(24D70) Intel
結論、Bun単体でPrisma は使えない
以下のイシューで議論されているが、以下の通り。
Adding
COPY --from=node:20 /usr/local/bin/node /usr/local/bin/node
to the docker file solved the issue for now.
英語読めないが、node.jsをbunの環境に入れれば解消するとのこと。
解消方法として、bunとnode.jsが両方インストールされているImageimbios/bun-node
を使用してインストールすると解消した。
# Set Bun and Node version
ARG BUN_VERSION=1.1.13
ARG NODE_VERSION=20.12.2
FROM imbios/bun-node:${BUN_VERSION}-${NODE_VERSION}-slim
imbios/bun-node Dockerイメージの解説
以下Claudeによる解説です。
imbios/bun-nodeは、BunとNode.jsという2つのJavaScriptランタイムを1つのDockerコンテナ内に統合したイメージです。
基本概念
- Bun: 比較的新しいJavaScriptランタイム、パッケージマネージャー、およびバンドラーです。Node.jsより高速な実行を目指して設計されており、多くのシナリオでNode.jsの代替として使用できます。
- Node.js: サーバーサイドでJavaScriptを実行するための、広く採用されている確立されたランタイムです。
- Docker: アプリケーションを開発、配布、実行するためのコンテナ化プラットフォームです。
imbios/bun-nodeの主な用途
このイメージを使用することで、開発者は以下のことが可能になります:
- デュアルランタイム環境: 同じコンテナ内でBunとNode.jsの両方のアプリケーションを実行できます。
- 互換性テスト: BunでのコードがNode.jsでも正しく動作するか(またはその逆)を簡単に検証できます。
- 移行の容易さ: Node.jsプロジェクトからBunへの段階的な移行を支援します。
- ツールの相互運用: それぞれのランタイムに特有のツールやライブラリを活用できます。
利点
- 開発効率の向上: 複数の環境を別々に設定する必要がなくなります。
- リソース効率: 1つのコンテナで両方のランタイムを管理できます。
- CI/CD互換性: 継続的インテグレーション・デリバリーのパイプラインで両方の環境をテストできます。
このDockerイメージは、JavaScriptの新しいエコシステム(Bun)と確立されたエコシステム(Node.js)の橋渡しをしたい開発者にとって特に有用です。
Discussion