1. Docker

https://hub.docker.com/

docker-compose.yml

version: "3.9"
services:
  bid-buddy-db:
    image: postgres // 도커허브로 이동하라
    restart: always
    container_name: bid-buddy-db
    ports:
      - 5432:5432
    ****environment**:**
      POSTGRES_PASSWORD: example
      PGDATA: /data/postgres
    ****volumes**:**
      - postgres:/data/postgres

****volumes**:**
  postgres**:**

실행 명령어

$ docker compose up

Drizzle ORM

https://orm.drizzle.team/

https://orm.drizzle.team/docs/get-started-postgresql#postgresjs

npm i drizzle-orm postgres
npm i -D drizzle-kit

src > db > database.ts

import { env } from "@/env";
import * as schema from "./schema";
import { PostgresJsDatabase, drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";

declare global {
    // eslint-disable-next-line no-var -- only var works here
    var database: PostgresJsDatabase<typeof schema> | undefined;
}

let database: PostgresJsDatabase<typeof schema>;
let pg: ReturnType<typeof postgres>;

if (env.NODE_ENV === "production") {
    pg = postgres(env.DATABASE_URL);
    database = drizzle(pg, { schema });
} else {
    if (!global.database) {
        pg = postgres(env.DATABASE_URL);
        global.database = drizzle(pg, { schema });
    }
    database = global.database;
}

export { database, pg };

npm i @t3-oss/env-nextjs