求助:如何在Apple Silicon M1设备上运行prisma.io?
解决Apple Silicon M1上Prisma + Docker的连接问题
我之前在M1 Mac上折腾过Prisma + Docker的配置,踩过几乎一模一样的坑,分享几个亲测有效的解决步骤:
一、先搞定数据库镜像的ARM适配问题
你提到的MySQL官方镜像不支持arm64是事实,但我们有两个替代方案:
- MariaDB:直接用官方支持arm64的镜像,比如
mariadb:10.6或更高版本,这个是最稳定的选择 - MySQL预览版:可以用
mysql/mysql-server:8.0.28-oracle,这是官方推出的arm64预览镜像,虽然是预览版,但日常开发足够用
二、解决"localhost拒绝连接"的核心问题
你用MariaDB启动容器成功后却连不上,大概率是这几个原因:
1. Prisma Studio端口已经变了!
Prisma 2.x之后,Studio的默认端口从4466改成了5555,别再访问http://localhost:4466了,试试http://localhost:5555!
2. Docker内部网络的连接字符串写错了
在Docker Compose里,容器之间不能用localhost访问,必须用服务名!比如你的MariaDB服务名叫db,那Prisma的连接字符串应该是:
mysql://prisma:prisma@db:3306/prisma
而不是localhost:3306——localhost在容器内部指的是容器自己,不是你的Mac主机。
3. 数据库还没初始化完成就启动Prisma
有时候容器显示"运行中",但数据库还在初始化,这时候Prisma连接会失败。给Docker Compose加个健康检查,确保数据库完全就绪后再启动Prisma:
示例Docker Compose配置(MariaDB + Prisma)
version: '3.8' services: db: image: mariadb:10.6 environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: prisma MYSQL_USER: prisma MYSQL_PASSWORD: prisma ports: - "3306:3306" # 健康检查:确保数据库能正常响应 healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10 prisma: image: prismagraphql/prisma:latest # 依赖数据库的健康状态,确保初始化完成 depends_on: db: condition: service_healthy environment: DATABASE_URL: mysql://prisma:prisma@db:3306/prisma ports: - "5555:5555" command: ["studio"]
三、PostgreSQL/MongoDB的同理解决方案
针对PostgreSQL,直接用官方arm64镜像postgres:14+,连接字符串同样要替换成服务名(比如postgres://prisma:prisma@db:5432/prisma);MongoDB用mongo:5.0+的arm镜像,配置逻辑完全一致。
四、本地Prisma客户端的额外注意事项
如果是在本地安装Prisma(不是用Docker容器运行),确保你的Node版本在16.x以上,并且执行:
npx prisma generate npx prisma migrate dev
生成适配M1架构的客户端文件,避免架构不兼容的问题。
内容的提问来源于stack exchange,提问作者Ambid
相关产品推荐
相关产品推荐

