Как я могу настроить более одной службы 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}

Я не могу найти в документации ничего для этого. Есть ли рекомендуемый поток или конфигурация для этого?


person Kinara Nyakaru    schedule 08.04.2020    source источник


Ответы (1)


Самый простой способ - изменить конечную точку prisma так, чтобы она указывала на другой сервер prisma, перед запуском prisma deploy. На момент написания prisma было переименовано с prisma на prisma1. Дополнительную информацию можно найти здесь, поэтому убедитесь, что у вас есть prisma1 установлен как devDependency.

Prisma объясняет, как добиться того же в своих документах здесь.

Выполните следующие шаги:

  1. Установите prisma1 как devDependency yarn add prisma1 -D,
  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"
    }
  }
person Danny Sofftie    schedule 08.04.2020