ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

使用 Docker 在本地部署 Prisma 集群:`prisma local` 完整实战指南

使用 Docker 在本地部署 Prisma 集群:`prisma local` 完整实战指南 后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载本指南基于 Prisma 1.xdeprecated 版本的官方文档《Local Cluster (Docker)》讲解如何通过prisma local在本地 Docker 环境中搭建 Prisma 集群并完成服务的部署、升级、查看与数据迁移等全流程操作。读完本文你将掌握在无外网依赖的离线开发环境中使用 Docker 启动 Prisma 服务端、将服务部署到本地集群、安全升级集群版本等完整实战技能。一、本地集群Local Cluster是什么Prisma 的本地集群Local Cluster是指通过 Docker 在本机运行的 Prisma 服务端与数据库实例。默认情况下prisma deploy会把服务部署到 Prisma Cloud 提供的托管开发集群如prisma-eu1、prisma-us1但在以下场景中本地集群是更合适的选择无网络环境开发在没有外网连接的环境下无法访问 Prisma Cloud本地集群可以完全离线运行数据完全本地化数据不经过任何第三方服务全部存储在本机 Docker 卷中开发调试隔离可以随时start/stop/nuke本地集群不影响云端环境。从 CLI 源码看Prisma CLI 专门为本地集群注册了cluster主题topic其描述为 Manage local clusters位于 cli/packages/prisma-cli-core/src/index.ts同时还有init-prisma主题负责初始化本地集群。这意味着prisma local ...系列命令与prisma cluster list等集群管理命令构成了完整的本地集群工作流。二、环境准备安装 Docker运行本地 Prisma 集群的前提是机器上安装了较新版本的 Docker。Prisma 官方推荐使用免费的Docker Community EditionDocker CE安装指引以官方站点为准本文以当前仓库内文档的说明为基础。安装完成后可以通过以下命令验证 Docker 是否就绪docker --version docker-compose --version需要说明的是docker-compose同样重要——prisma init在本地集群模式下会生成docker-compose.yml后续的本地启动本质上依赖 Docker Compose 来编排 Prisma 与数据库容器。CLI 源码中通过isDockerComposeInstalled()检测其是否安装未安装时会提示用户参考 Docker Compose 官方安装文档见 cli/packages/prisma-cli-core/src/commands/init/init.ts。三、启动本地集群prisma local start启动本地集群非常简单只需一条命令prisma local start该命令会从 Docker Hub 下载 Prisma 的开源 Docker 镜像启动两个 Docker 容器一个 Prisma 服务容器一个 MySQL 数据库容器首次执行时耗时较长耗时取决于网络状况。启动完成后本地集群会监听http://localhost:4466其中/cluster是集群管理端点。从源码角度看本地集群的容器编排模板保存在 cli/packages/prisma-cli-core/src/commands/init/boilerplate/docker-compose.yml 中模板内定义了两个服务服务名镜像作用prisma-dbmysql:5.7数据库容器暴露3306端口可配置数据持久化到db-persistence卷prisma-databaseprismagraphql/prisma:1.1Prisma 服务容器映射宿主端口通过环境变量连接 MySQL模板中值得关注的配置细节MySQL 通过mysqld --max-connections1000等参数启动并显式设置了兼容 Prisma 的 SQL modePrisma 容器通过SQL_CLIENT_*系列环境变量连接外部数据库即你部署服务时实际使用的数据库通过SQL_INTERNAL_*系列环境变量连接内部元数据数据库数据卷db-persistence保证了容器重启后数据不丢失两个容器同处prismabridge 网络可互相通信。四、部署服务到本地集群prisma deploy集群启动后就可以把服务部署上去。在项目目录包含prisma.yml与datamodel.prisma执行❯ prisma deploy ? Please choose the cluster you want to deploy demodev to (Use arrow keys) prisma-eu1 Free development cluster (hosted on Prisma Cloud) prisma-us1 Free development cluster (hosted on Prisma Cloud) ❯ local Local cluster (requires Docker)使用方向键选择local后CLI 会将所选集群写入项目根目录的prisma.yml新增一个cluster条目形如endpoint: http://localhost:4466/demo/dev datamodel: datamodel.prisma cluster: local这里的交互选择逻辑对应 cli/packages/prisma-cli-core/src/commands/deploy/deploy.ts当prisma.yml中尚未配置 endpoint 或 service 时deploy 命令会通过EndpointDialog拉取所有可用集群fetchClusters()并弹出选择列表选中后调用replaceEndpoint()把最终 endpoint 写回prisma.yml。部署过程中 CLI 还会做两个重要检查本地集群在线检测如果所选集群是 local 且处于离线状态cluster.local !(await cluster.isOnline())会直接抛出错误Could not connect to server at ... Please check if your server is running.——此时应先执行prisma local start私有集群登录检测对于非 local 的私有集群会要求先登录 Prisma Cloudcluster.local的本地集群则无需此步骤。deploy 命令还提供了一些实用的 flags均定义于 deploy.tsFlag简写说明--force-f接受因 schema 变更导致的数据丢失--new-n强制进入交互模式重新选择集群--dry-run-d预演部署不真正执行--no-seed-首次部署时不执行 seed--json-j输出 JSON 格式--no-migrate-跳过自动迁移使用prisma init初始化本地项目如果你还没有项目可以用prisma init初始化。当交互流程中选择 local 集群时CLI 会额外生成 docker-compose.yml 与.env文件内含PRISMA_MANAGEMENT_API_SECRET最终目录结构如下prisma.yml # Prisma 服务定义 datamodel.prisma # GraphQL SDL 数据模型 docker-compose.yml # Docker 编排文件本地集群专属 .env # 包含 PRISMA_MANAGEMENT_API_SECRET初始化完成后CLI 会提示下一步操作docker-compose up -d启动 Prisma 服务端然后prisma deploy部署服务对应 cli/packages/prisma-cli-core/src/commands/init/init.ts 中的 next steps 输出。五、查看集群信息prisma cluster list执行以下命令可以查看当前机器上所有可用集群及其版本❯ prisma cluster list name version endpoint ────────────── ───────────── ────────────────────────────────── local 1.0.0-beta4.2 http://localhost:4466/cluster输出中的每一列含义如下name集群名称本地集群固定为localversion当前运行的 Prisma 版本号示例中为1.0.0-beta4.2实际以你安装的镜像版本为准endpoint集群的管理端点地址。通过该命令可以快速确认本地集群是否正常运行以及服务端版本是否满足项目要求。六、升级本地集群prisma local upgrade当 Prisma 发布新版本时升级本地集群同样只需要一条命令prisma local upgrade升级会拉取最新的 Prisma Docker 镜像并重建容器。强烈建议在升级前先导出数据备份使用prisma export命令prisma exportprisma export会把服务数据导出到本地文件对应的实现位于 cli/packages/prisma-cli-core/src/commands/export/index.ts其命令描述为 Export service data to local file。它生成的导出文件包含nodes/、lists/、relations/三个目录的 JSON 数据之后可用prisma import恢复。如果升级过程中或升级后出现问题可以彻底重置nuke本地集群但请注意nuke 会清空本地集群的所有数据。重置后需要重新执行prisma local start启动集群并可通过prisma import导入此前导出的数据。所以导出备份是升级前的必备操作。七、直接使用现有 MySQL 数据库本地集群默认内置 MySQL但你也可以让 Prisma 直接连接已有的 MySQL 数据库包括已有数据的库。这对应官方文档提到的数据库直连introspection能力prisma introspectintrospect命令topic 描述为 Introspect database schema(s) of service见 cli/packages/prisma-cli-core/src/index.ts会根据现有数据库的结构自动生成对应的datamodel.prisma实现以数据库为起点的数据模型导入。与本地集群搭配使用时可以做到本地启动 Prisma → 连接本机或局域网内已有 MySQL → introspection 生成模型 → 部署服务。八、本地集群工作流总结把整个生命周期串起来本地集群的典型工作流如下# 1. 安装 Docker CE 与 docker-compose # 2. 启动本地集群首次会拉取镜像较慢 prisma local start # 3. 可选初始化项目并生成 docker-compose.yml prisma init # 4. 部署服务到 local 集群交互选择 local prisma deploy # 5. 查看集群状态与版本 prisma cluster list # 6. 升级前备份数据 prisma export # 7. 升级本地集群 prisma local upgrade # 8. 出问题时彻底重置会清空数据 # prisma local nuke重置后重新 start再用 prisma import 恢复数据相关的其他部署方式可参考同一章节的姊妹文档Digital Ocean (Docker Machine).md)、Digital Ocean (manual).md)、Kubernetes 与 Prisma Cloud本地集群是其中唯一完全脱离云端、可离线运行的选择。九、注意事项与限制版本前提本文命令与配置基于 Prisma 1.x CLIprisma local/prisma cluster主题当前仓库已标记为 deprecated新项目建议评估官方后续替代方案端口占用本地集群默认监听4466端口且 MySQL 容器默认映射宿主端口模板中通过DB_PORT环境变量控制启动前请确保相关端口未被占用数据安全prisma local upgrade与 nuke 操作前务必先prisma export备份nuke 操作不可逆离线场景prisma local start首次需要联网拉取 Docker 镜像镜像就绪后日常开发可完全离线进行。通过以上步骤你可以在本机用 Docker 快速搭建一套完整的 Prisma 本地开发环境实现服务的离线部署、升级与数据管理大幅降低开发环境对云端集群的依赖。赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma 本地集群Docker部署实战用 prisma local 在本地运行 Prisma 与 MySQLPrisma 本地集群Docker部署实战用 prisma local 在本地运行 Prisma 与 MySQL 导读 本文是 Prisma 1.x 系列后端数据库GraphQLPrisma 本地集群部署指南使用 Docker 与 prisma local 在本地搭建 Prisma 环境Prisma 本地集群部署指南使用 Docker 与 prisma local 在本地搭建 Prisma 环境 导读 本文以 Prisma 1.4 版本的官方后端数据库GraphQL在本地 Docker 集群上部署 Prisma 数据库服务prisma local 完整实战指南在本地 Docker 集群上部署 Prisma 数据库服务 prisma local 完整实战指南 本指南以 docs/1.1/03 Tutorials/04后端数据库GraphQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表