質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

2500閲覧

DockerでPrismaのマイグレーションが実行できない

RyoS_

総合スコア4

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/08/25 11:31

編集2021/08/26 05:28

前提・実現したいこと

DockerでExpressとMySQLの環境を構築しています。
ORMマッパーとして、Prismaを使用しています。
https://www.prisma.io/

以下のコードで、Prismaのマイグレーションを行ったのですがエラーが発生します。

npx prisma migrate dev --name init

発生している問題・エラーメッセージ

エラーメッセージ
https://www.prisma.io/docs/reference/api-reference/error-reference#p1001

❯ docker-compose exec app ash /node # npx prisma migrate dev --name init Prisma schema loaded from prisma/schema.prisma Datasource "db": MySQL database "Nuxt-Express-TypeScript" at "db:6306" Error: P1001: Can't reach database server at `db`:`6306` Please make sure your database server is running at `db`:`6306`.

該当のソースコード

docker-compose.yml

yml:

1version: '3.8' 2 3volumes: 4 db-data: 5 6services: 7 # MySQL 8 db: 9 image: mysql:5.7 10 environment: 11 MYSQL_DATABASE: $MYSQL_DATABASE 12 MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD 13 TZ: $TZ 14 volumes: 15 - db-data:/var/lib/mysql 16 - db-data:/etc/mysql/conf.d/my.cnf 17 ports: 18 - $DB_PORT:3306 19 20 #【backend】Express 21 app: 22 build: 23 context: ./docker/app 24 environment: 25 TZ: $TZ 26 DEBUG: $BACKEND_DEBUG 27 DATABASE_URL: $BACKEND_DATABASE_URL 28 tty: true 29 ports: 30 - $BACKEND_PORT:18080 31 restart: always 32 volumes: 33 - $BACKEND_DIR:$BACKEND_WORK_DIR 34 working_dir: $BACKEND_WORK_DIR 35 command: [sh, -c, npm install && npm run build && npm run start]

.env

# mysql DB_PORT = "6306" # backend BACKEND_PORT = "18080" # frontend FRONT_PORT = "3000" STORYBOOK_PORT = "6006" # Dockerfile <mysql> MYSQL_DATABASE = "Nuxt-Express-TypeScript" MYSQL_ROOT_PASSWORD = "password" TZ = "Asia/Tokyo" # Dockerfile <backend> BACKEND_DIR = "./api" BACKEND_WORK_DIR = "/node" BACKEND_DEBUG = "api:*" BACKEND_DATABASE_URL = "mysql://root:password@db:6306/Nuxt-Express-TypeScript"

Dockerfile <app>

FROM node:14.15.3-alpine WORKDIR /node RUN apk update && apk add bash COPY package*.json ./ RUN npm install EXPOSE 18080 CMD npm run build && npm run start

prisma/schema.prisma

datasource db { provider = "mysql" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } model User { id Int @id @default(autoincrement()) name String email String @unique }

試したこと

Sequel ProでDBにアクセスできるかどうか確認

接続確認しました。

イメージ説明

無事接続でき、Nuxt-Express-TypeScriptというDBが作成できていることが確認できました。

イメージ説明

DBのホスト名を変更

今回のエラーは、DBへの接続が出来ていないというものかと思います。
なので、今回はホスト名がlocalhostではなく、dbになると思うので、そこの修正を行いました。

(修正前) mysql://root:password@localhost:6306/Nuxt-Express-TypeScript

(修正後) mysql://root:password@db:6306/Nuxt-Express-TypeScript

修正前も修正後もどちらもマイグレーションに失敗しました。

どこに問題があり、エラーが発生するかが分からないのでお教えいただけますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問