NestJS × Prisma × PostgreSQL × Dockerで開発環境構築
タイトルの構成で、最低限開発が進められるところまでの環境構築をする。
環境構築手順
1. Dockerの設定
1-1. Dockerfile
1-2. docker-compose.yml
1-3 .dockerignore
1-4. ビルド
上記コマンドを叩きコンテナが起動していればOK。
もしMac・Docker Desktopを利用していてビルドが失敗する際は下記の方法で解決するかも。
【Docker】ビルドが.docker/buildx/current:permission deniedとエラーになる
2. コンテナに入る
以後はコンテナ内で作業していく。
3. Nestプロジェクトの作成
と聞かれるのでnpm
を選択。
localhost:3000
にアクセスしてHello World!
が表示されればアプリ側はOK。
以後は各種npmパッケージのインストールと開発環境立ち上げをコンテナ起動時に行いたいので、Dockerfile
に追記しておく。
4. Prisma
4-1. 導入
.env
が自動で生成されるので、上記のようにDATABASE_URL
をpostgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DATABASE>
の形に書き換える。
ちなみにホストにlocalhost
ではなくDBのサービス名(db
)を指定している背景は下記にまとめている。
4-2. マイグレーション
prisma/schema.prisma
が生成されているので、適当なスキーマ設定を追記する。
マイグレーションを実行する。
もし失敗する場合は下記が参考になるかも。
【Prisma】migrate devが「Can't reach database server」とエラーになる
4-3. スキーマの確認
Prisma Studioを起動しlocalhost:5555
にアクセスする。
User
テーブルを確認し、先ほどschema.prisma
に追記したスキーマが反映されていればOK。
4-4. Prisma Clientの生成
MySQLを使う場合
docker-compose.yml
.env
schema.prisma
加えて、MySQLだとマイグレーション時に下記のように権限を付与する必要がある。
【Prisma】migrate devが「could not create the shadow database」とエラーになる