在Postgresql中指定Prisma的数据库名称

Ark*_*kin 1 postgresql prisma

我正在尝试实现一种微服务体系结构,其中每个微服务都具有自己的数据库。我将prisma用作服务和单个数据库服务器之间的数据访问层。由于我只有一台数据库服务器,因此我希望每个prisma实例都可以在该服务器上访问自己的数据库,但是我没有找到指定特定prisma实例使用的数据库名称的选项。

所以这是问题。有没有一种方法可以为prisma实例指定数据库名称?

docker-compose.yml如果有用的话,这是我的文件:

version: '3'
services:
  prisma:
    image: prismagraphql/prisma:1.14
    restart: always
    ports:
    - "${PRODUCT_PRISMA_PORT}:${PRODUCT_PRISMA_PORT}"
    environment:
      PRISMA_CONFIG: |
        port: ${PRODUCT_PRISMA_PORT}
        managementApiSecret: ${PRODUCT_PRISMA_SECRET}
        databases:
          product:
            connector: postgres
            host: postgres
            port: 5432
            user: prisma
            password: prisma
            migrations: true
  postgres:
    image: postgres:11-alpine
    restart: always
    environment:
      POSTGRES_USER: prisma
      POSTGRES_PASSWORD: prisma
    volumes:
      - /var/lib/postgresql/data
  product-app:
    command: yarn start
    image: product-web
    volumes:
      - ./product-service:/usr/app
    ports:
      - "${PRODUCT_APP_PORT}:${PRODUCT_APP_PORT}"
    depends_on:
      - prisma
    environment:
      PORT: ${PRODUCT_APP_PORT}
      PRISMA_ENDPOINT: ${PRODUCT_PRISMA_ENDPOINT}
Run Code Online (Sandbox Code Playgroud)

Dom*_*nic 5

尝试在配置上使用“数据库”键:

 environment:
  PRISMA_CONFIG: |
    port: ${PRODUCT_PRISMA_PORT}
    managementApiSecret: ${PRODUCT_PRISMA_SECRET}
    databases:
      product:
        connector: postgres
        host: postgres
        port: 5432
        user: prisma
        password: prisma
        migrations: true
        database: ${DATABASE} 
Run Code Online (Sandbox Code Playgroud)

但是,请注意Prisma用于pg_advisory_lock锁定数据库的独占访问。我从头顶上不知道这是否会阻止您在不同的PG 数据库上运行多个Prisma实例,但是我强烈建议您使用两个容器的安装程序进行尝试。如果两个容器日志Obtaining exclusive agent lock... Successful.显示日志行,则该行有效。如果Obtaining exclusive agent lock...只有一个挂起,则不会。

希望能有所帮助。