Next.js+TypeScript+DockerでPrismaのセットアップをする手順を備忘録として以下に記載します。
インストールと下準備
docker compose run --rm frontend sh
npm install @prisma/client
npm install prisma --save-dev
docker compose run --rm frontend sh
npx prisma init
Dockerfileに以下を追記してビルドします。
RUN npx prisma generate
prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
以下のようにoutputが記載されたままだと
generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
以下のようなエラーが出る場合があります。
:::note warn
⨯ Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.
:::
postgresのIPを固定します。
docker-compose.yml
frontend:
・
・
・
postgres:
・
・
・
networks:
fixed_compose_network:
テーブルの生成
先にpostgresのコンテナだけを起動しmigrateをしてテーブルを生成します。
docker compose up postgres
docker compose run --rm frontend sh
npx prisma migrate dev --name init
なお、特定のコンテナだけを止めるときは以下のコマンドです。
docker-compose rm -fsv サービス名
参考