Prisma/Docker 環境構築

Backend
Backend

Prismaを使って基礎的なバックエンド環境を構築する方法を解説します。本記事では、コンテナ化されたPostgreSQLを使用した例を解説します。

本記事で扱う技術とバージョンは以下です。

  • Node: v22.11.0
  • typescript:v5.7.2
  • @types/node:v22.10.2
  • dotenv:v16.4.7
  • Docker:v27.3.1
  • M3 MacbookAir
管理人
管理人

Prismaの環境準備だよ!

また、Node.jsとDockerは事前にインストール済みであることを前提に解説します。

1. プロジェクトの初期化とパッケージインストール

最初にPrismaのインストールおよび初期化を実施します。

# プロジェクト作成
mkdir samplePrj
cd samplePrj

# Prismaクライアントとdotenvのインストール
npm i prisma @prisma/client dotenv

# Prisma初期化
npx prisma init

Prismaの初期化により、prisma ディレクトリが作成され、schema.prismaが生成されます。

2. DB構築

Docker Composeを使ってコンテナ化されたPostgreSQLを構築します。

# docker-compose.ymlを作成
touch docker-compose.yml

docker-compose.yml

services:
  db:
    image: postgres
    container_name: test_db
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}

volumes:
  db-data:

docker-compose.ymlを作成したら、以下のコマンドでDBを起動します。-d をつけてバックグラウンド実行でも大丈夫です。

# test_dbコンテナを実行
docker compose up

3. テーブル設定

Prismaのスキーマファイルでテーブルを定義します。ここではサンプルとしてUser, Postモデルを定義します。

schema.prisma

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

4. 環境情報定義

.envファイルで環境変数を定義します。

# .envファイルを作成
touch .env

.env

# POSTGRES
POSTGRES_USER="postgres"
POSTGRES_PASSWORD="任意のパスワード"
POSTGRES_DB="任意のデータベース名"

DATABASE_URL="postgresql://postgres:任意のパスワード@localhost:5432/任意のデータベース名?schema=public"

備考: コンテナ環境ではlocalhostではなく、コンテナ名(この場合はtest_db)を使用する場合があります。環境によって設定を調整してください。

5. マイグレーション実行

Prismaのコマンドでマイグレーションを実行し、DBにテーブルを生成します。

# マイグレーション実行
npx prisma migrate dev --name init

# テーブルが作成されているか確認
docker exec -it test_db bash
su - postgres
psql
\l
\c test_db
\dt

6. [おまけ] Prismaクライアントの呼び出し方

Prismaクライアントをコード上で実装する方法の一例を、TypeScriptのコードで以下に示します。

src/prismaClient.ts

import { PrismaClient } from "@prisma/client";

const prisma = new PrismaClient({ log: ["query", "info", "warn", "error"] });

export default prisma;

このクライアントを利用することで、DB操作を簡単に行えます。

まとめ

この記事では、Prismaを使ったバックエンド開発の基本手順を解説しました。

  1. 必要なパッケージのインストールと初期化
  2. DockerでPostgreSQL環境を構築
  3. Prismaスキーマの設定とマイグレーションの実行
  4. Prismaクライアントを使ったデータ操作方法

Prismaを活用することで、型安全で効率的なデータベース操作が可能になります。この手順を参考に、さらにCRUD機能やAPIの構築に挑戦してみてください!

コメント

タイトルとURLをコピーしました