Указание имени базы данных Prisma в postgresql - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь реализовать микросервисную архитектуру, где у каждого микросервиса есть своя собственная база данных.Я использую 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}

1 Ответ

0 голосов
/ 01 октября 2018

Попробуйте использовать ключ «database» в конфигурации:

 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} 

Однако учтите, что Prisma использует pg_advisory_lock для блокировки монопольного доступа к базе данных.Я не знаю с головы до головы, если это помешает вам запускать несколько экземпляров Prisma для разных баз данных PG , но я настоятельно рекомендую вам попробовать это с настройкой двух контейнеров.Если строка журнала Obtaining exclusive agent lock... Successful. появляется в обоих журналах контейнера, это работает.Если вы зависаете только с Obtaining exclusive agent lock..., это не так.

Надеюсь, это поможет.

...