やりたいこと
- Dockerを使ってローカル環境でMysqlのDBを起動させる
- Prismaを使ってUsersテーブルを作成する
- データベースの管理アプリであるSecuelAceを使ってアクセスできる
全体像
docker-compose で Mysqlを起動
ルートディレクトリにファイル作成
docker-compose.yml
version: '3.9'
services:
db:
image: mysql:8.0
platform: linux/amd64 # M1 Macの場合はplatformをlinux/amd64に指定する
container_name: type-express-db
ports:
- 3306:3306
volumes:
- mysql:/var/lib/mysql # ボリューム領域を指定 ※ボリュームの指定 -> {ボリューム名}:{コンテナ内の絶対パス}
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: type-express-db
volumes:
mysql:
$ docker compose up -d db
prismaの導入
$ npm install prisma @prisma/client
$ npx prisma init --datasource-provider mysql
.env
DATABASE_URL="mysql://root:password@localhost:3306/type-express-db" // <- 追記
UsersテーブルのSchemaの設定
prisma/schema.prisma
のファイルに Userテーブル の Schema を追記
prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String
password String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@map("users")
}
マイグレーション
$ npx prisma migrate dev --name CreateUsersTable
SecuelAceを使って接続を確認
-
TCP/IP
を選択 - Name : 何でもOKです。適用な文字列を入力してください
- Host : 127.0.0.1
- Username : docker-compose.yml内で特にしてしていない場合は、
root
と記述します - Password : docker-compose.yml内で指定したパスワード(今回の場合だったら
password
と記述します) - Database : docker-compose.yml内で指定したデータベース名(今回の場合だったら
type-express-db
と記述します) - Port : 特に記述なしでOKです
- Connect ボタンをクリック