Vercel Postgres試してみた
概要
2023年5月頃、VercelでStorageサービスが公開されました。公開されたサービスにはVercel KV(Redis), Vercel Postgresなどがあり、Next.jsのフルスタック化がかなり進んだと感じました。そこで、今回はVercel Postgresを試してみたいと思います!
環境構築
pnpmの導入
brew install pnpm
アプリをスターターキットから作成
pnpm create next-app --example https://github.com/vercel/examples/tree/main/storage/postgres-prisma
コマンドを実行すると、以下のような出力が得られると思います!
Library/pnpm/store/v3/tmp/dlx-54128 | +1 +
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: /Users/yuuki/Library/pnpm/store/v3
Virtual store is at: Library/pnpm/store/v3/tmp/dlx-54128/node_modules/.pnpm
Library/pnpm/store/v3/tmp/dlx-54128 | Progress: resolved 1, reused 0, downloaded 1, added 1, done
✔ What is your project named? … next-psql
Creating a new Next.js app in /Users/yuuki/Desktop/workspace/next-psql.
Downloading files from repo https://github.com/vercel/examples/tree/main/storage/postgres-prisma. This might take a moment.
Installing packages. This might take a couple of minutes.
Downloading registry.npmjs.org/typescript/5.0.4: 7.05 MB/7.05 MB, done
Downloading registry.npmjs.org/next/13.3.2: 12.1 MB/12.1 MB, done
Packages: +369
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are copied from the content-addressable store to the virtual store.
Content-addressable store is at: /Users/yuuki/Library/pnpm/store/v3
Virtual store is at: node_modules/.pnpm
Downloading registry.npmjs.org/turbo-darwin-arm64/1.9.3: 12.3 MB/12.3 MB, done
Downloading registry.npmjs.org/@next/swc-darwin-arm64/13.3.2: 33.1 MB/33.1 MB, done
node_modules/.pnpm/@prisma+engines@4.13.0/node_modules/@prisma/engines: Running postinstall script, done in 2.3s
Progress: resolved 382, reused 0, downloaded 369, added 369, done
node_modules/.pnpm/turbo@1.9.3/node_modules/turbo: Running postinstall script, done in 328ms
node_modules/.pnpm/prisma@4.13.0/node_modules/prisma: Running preinstall script, done in 53ms
node_modules/.pnpm/@prisma+client@4.13.0_prisma@4.13.0/node_modules/@prisma/client: Running postinstall script, done in 738ms
dependencies:
+ @prisma/client 4.13.0
+ @types/node 18.15.11
+ @types/react 18.0.37
+ @types/react-dom 18.0.11
+ autoprefixer 10.4.14
+ eslint 8.38.0
+ eslint-config-next 13.3.0
+ ms 2.1.3
+ next 13.3.2
+ postcss 8.4.22
+ react 18.2.0
+ react-dom 18.2.0
+ tailwindcss 3.3.1
+ ts-node 10.9.1
+ typescript 5.0.4
devDependencies:
+ @types/ms 0.7.31
+ prisma 4.13.0
+ turbo 1.9.3
Done in 16.8s
Initialized a git repository.
Success! Created next-psql at /Users/yuuki/Desktop/workspace/next-psql
Inside that directory, you can run several commands:
pnpm run dev
Starts the development server.
pnpm run build
Builds the app for production.
pnpm start
Runs the built app in production mode.
We suggest that you begin by typing:
cd next-psql
pnpm run dev
Vercel Postgresの作成
公式に飛んで、Get Started
を押してください。もしくは、VercelのダッシュボードからStorage
へ移動してください。
すると、以下のページに遷移すると思います。
ここで、Postgres(Beta)
を選択してください。
選択後、規約に同意するか聞かれます。読んだ後、Accept
を押してください。
同意後、以下のモーダルに遷移します。設定は以下のような感じでOKです。
地域に関しては、お住まいの地域に近い国を選びましょう。
作成できました!!
環境変数
1度だけ以下のコマンドを実行し、環境変数を作成します。
cp .env.example .env
そして、先ほど作成したPostgresの以下の画面を表示し、Quickstart
に掲載されている .env.local を選び、Copy Snippet
をクリック後、先ほど作成した .env
にコピペしましょう。
Seed
ローカルで実行できるようにするには、Vercelの PostgreSQLでテーブルの作成からSeedまで入れるという作業が必要です。
pnpm prisma generate
pnpm prisma db push
pnpm prisma db seed
Seedが入ったかどうかはVercel Storageから確認できます。
以下の画像のように、サイドメニューのdata
にあるQuery
で実際にUserテーブルに値があるかSQLを発行してみましょう。
動作確認
pnpm dev
これで開発環境のサーバーが起動します。
URL:http://localhost:3000/
以下のようなページになっていると思います!
補足(デプロイについて)
デプロイする場合はまた別のやり方になりますが、以下の手順です。
- Githubにソースコードをアップロード
- Vercelでプロジェクトを作成する
- Vercel Storageと連携させる(環境変数はよしなに入れてくれます)
- デプロイする
参考文献
Discussion