我如何设置多个 PRISMA 服务,一个用于测试,一个用于开发
How can I setup more than one PRISMA service, one for testing and one for development
我想要一个单独的数据库用于测试和开发。我想要实现的是拥有不止一项 Prisma 服务,一项用于测试,一项用于正常开发。
这是我的docker-compose.yml文件
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.34
restart: 'always'
ports:
- '4466:4466'
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mongo
uri: ${MONGO_CONNECTION_STRING}
prisma_testing:
image: prismagraphql/prisma:1.34
restart: 'always'
ports:
- '4400:4400'
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mongo
uri: ${TEST_MONGO_CONNECTION_STRING}
我在文档中找不到任何实现此目的的内容。是否有实现此目的的推荐流程或配置?
最简单的方法是在 运行 prisma deploy
之前将 prisma 的端点更改为指向不同的 prisma 服务器。截至撰写本文时,prisma
已从 prisma
重命名为 prisma1
。您可以找到更多详细信息 here,因此请确保将 prisma1
安装为 devDependency
。
Prisma 在他们的文档中解释了如何实现相同的目标 here。
按照以下步骤操作:
- 安装
prisma1
作为 devDependency yarn add prisma1 -D
,
- 生成 prisma 客户端并指定要使用的配置文件
npx prisma1 generate -p path/to/prisma.test.yml
- 运行 你的测试
在您的配置文件中,指定指向不同 prisma 服务器的不同端点,您可能希望一个用于测试,另一个用于生产。
不同配置文件的内容可能如下所示:
prisma.test.yml(对于 运行 本地测试)
endpoint: http://127.0.0.1:4466
datamodel: datamodel.prisma
databaseType: document
secret: u4r4secret
generate:
- generator: javascript-client
output: ./generated/prisma-client/
prisma.yml(生产用)
endpoint: http://prod-server-ip:4466
datamodel: datamodel.prisma
databaseType: document
secret: u4r4secret
generate:
- generator: javascript-client
output: ./generated/prisma-client/
同样重要的是,在将代码推送到生产环境之前不要忘记重新生成 prisma 客户端。一种快速简便的方法是使用 git 钩子。
建议:
使用 husky
并添加 pre-commit
挂钩,这将 运行 在 git commit
之前,以始终确保您的 prisma 客户端在推送到生产之前始终具有生产端点.将以下部分添加到 package.json
.
"husky": {
"hooks": {
"pre-commit": "yarn prisma:generate -p path/to/prisma.yml"
}
}
我想要一个单独的数据库用于测试和开发。我想要实现的是拥有不止一项 Prisma 服务,一项用于测试,一项用于正常开发。
这是我的docker-compose.yml文件
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.34
restart: 'always'
ports:
- '4466:4466'
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mongo
uri: ${MONGO_CONNECTION_STRING}
prisma_testing:
image: prismagraphql/prisma:1.34
restart: 'always'
ports:
- '4400:4400'
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mongo
uri: ${TEST_MONGO_CONNECTION_STRING}
我在文档中找不到任何实现此目的的内容。是否有实现此目的的推荐流程或配置?
最简单的方法是在 运行 prisma deploy
之前将 prisma 的端点更改为指向不同的 prisma 服务器。截至撰写本文时,prisma
已从 prisma
重命名为 prisma1
。您可以找到更多详细信息 here,因此请确保将 prisma1
安装为 devDependency
。
Prisma 在他们的文档中解释了如何实现相同的目标 here。
按照以下步骤操作:
- 安装
prisma1
作为 devDependencyyarn add prisma1 -D
, - 生成 prisma 客户端并指定要使用的配置文件
npx prisma1 generate -p path/to/prisma.test.yml
- 运行 你的测试
在您的配置文件中,指定指向不同 prisma 服务器的不同端点,您可能希望一个用于测试,另一个用于生产。
不同配置文件的内容可能如下所示:
prisma.test.yml(对于 运行 本地测试)
endpoint: http://127.0.0.1:4466
datamodel: datamodel.prisma
databaseType: document
secret: u4r4secret
generate:
- generator: javascript-client
output: ./generated/prisma-client/
prisma.yml(生产用)
endpoint: http://prod-server-ip:4466
datamodel: datamodel.prisma
databaseType: document
secret: u4r4secret
generate:
- generator: javascript-client
output: ./generated/prisma-client/
同样重要的是,在将代码推送到生产环境之前不要忘记重新生成 prisma 客户端。一种快速简便的方法是使用 git 钩子。
建议:
使用 husky
并添加 pre-commit
挂钩,这将 运行 在 git commit
之前,以始终确保您的 prisma 客户端在推送到生产之前始终具有生产端点.将以下部分添加到 package.json
.
"husky": {
"hooks": {
"pre-commit": "yarn prisma:generate -p path/to/prisma.yml"
}
}