如何设置多个PRISMA服务,一个用于测试,另一个用于开发



我想要一个单独的数据库用于测试和开发。我正在努力实现的是拥有一个以上的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。您可以在此处找到更多详细信息,因此请确保已将prisma1安装为devDependency

Prisma在这里的文档中解释了如何实现同样的目标。

遵循以下步骤:

  1. 将CCD_ 7作为devDependency CCD_
  2. 生成prisma客户端并指定配置文件以使用npx prisma1 generate -p path/to/prisma.test.yml
  3. 运行测试

在配置文件中,指定指向不同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"
}
}

相关内容

最新更新