Prisma 2 Docker容器无法连接MySQL数据库容器

时间:2020-04-20 13:46:58

标签: mysql docker docker-compose prisma

我正在开发带有pyramida 2,MySQL,Docker-compose,GraphQL-Yoga服务器的后端服务器

我的操作系统是Windows 10,码头工人使用debian-openssl-1.1.x

问题是棱镜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在pyramida文件夹中
DATABASE_URL="mysql://root:prisma@mysql:3306/prisma"

当我运行docker-compose(docker-compose up)时,prisma容器(prisma 2 studio)显示此日志

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)

enter image description here

我认为发生此错误是因为MySQL容器的密码与我在doctor-compose.yml中写的MYSQL_ROOT_PASSWORD不同。 但是,我认为设置似乎没有问题,为什么会发生此错误?

如果我没有设置MYSQL_ROOT_PASSWORD,MySQL容器生成的默认密码是什么?

我搜索了几天以找到此问题的答案,但我没有找到答案。请给我一些建议。谢谢

0 个答案:

没有答案