Контейнер Prisma 2 docker не может подключиться MySQL Контейнер базы данных - PullRequest
2 голосов
/ 20 апреля 2020

Я разрабатываю сервер Backend с prisma 2, MySQL, Docker -compose, сервер GraphQL-Yoga

Моя ОС Windows 10, docker compose use debian-openssl- 1.1.x

проблема в том, что prisma 2 контейнер не может подключиться MySQL контейнер

  • docker -compose.yml
version: "3.7"
services:
  mysql:
    image: mysql:8.0.19
    container_name: mysql
    ports:
      - 3306:3306
    restart: always
    environment:
      MYSQL_DATABASE: $${MYSQL_DATABASE}
      MYSQL_ROOT_PASSWORD: $${MYSQL_ROOT_PASSWORD}
    volumes:
      - /var/lib/mysql
  prisma:
    links:
      - mysql
    depends_on:
      - mysql
    container_name: prisma
    ports:
      - "5555:5555"
    build:
      context: back/prisma
      dockerfile: Dockerfile
    environment:
      MYSQL_URL: $${MYSQL_URL}
      MYSQL_ROOT_PASSWORD: $${MYSQL_ROOT_PASSWORD}
    volumes:
      - /app/prisma
  backend:
    links:
      - mysql
    depends_on:
      - mysql
    container_name: backend
    ports:
      - "4000:4000"
    build:
      context: back
      dockerfile: Dockerfile
    environment:
      MYSQL_URL: $${MYSQL_URL}
      FRONTEND_URL: $${FRONTEND_URL}
    volumes:
      - ./back:/app
      - ./back/node_modules:/app/node_modules
      - ./back/prisma:/app/prisma
  frontend:
    container_name: frontend
    ports:
      - "3000:3000"
    build:
      context: front
      dockerfile: Dockerfile
    environment:
      BACKEND_URL: $${BACKEND_URL}
    volumes:
      - ./front:/app
      - ./front/node_modules:/app/node_modules

  • .env
MYSQL_URL="mysql://root:prisma@mysql:3306/prisma"
BACKEND_URL=http://localhost:4000
FRONTEND_URL=http://localhost:3000
MYSQL_DATABASE:"prisma"
MYSQL_ROOT_PASSWORD:"prisma"

-schema.prisma

generator client {
  provider      = "prisma-client-js"
  binaryTargets = ["native", "debian-openssl-1.1.x"]
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}
  • .env в папке prisma
DATABASE_URL="mysql://root:prisma@mysql:3306/prisma"

когда я запускаю docker -compose (docker -compose up), контейнер prisma (студия prisma 2) показывает эти журналы

Error in Prisma Client request: 

Error: 
Invalid `prisma.user.count()` invocation:

Authentication failed against database server at `mysql`, the provided database credentials for `root` are not valid.

Please make sure to provide valid database credentials for the database server at `mysql`.
    at PrismaClientFetcher.request (/root/.cache/prisma/studio/app/runtime/index.js:1:52273)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

введите описание изображения здесь

Я думаю, что эта ошибка произошла, потому что контейнер MySQL имеет пароль, отличный от MYSQL_ROOT_PASSWORD, который я написал в doctor-compose.yml. Но я думаю, что, похоже, нет проблем с настройкой, почему происходит эта ошибка?

И если я не настроил MYSQL_ROOT_PASSWORD, какое значение пароля по умолчанию генерируется контейнером MySQL?

Я искал несколько дней, чтобы найти ответ на эту проблему, но не смог получить ответ. пожалуйста, дайте мне несколько советов. спасибо

...