Как я могу настроить более одного сервиса PRISMA, один для тестирования и один для разработки - PullRequest
2 голосов
/ 08 апреля 2020

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

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

1 Ответ

1 голос
/ 08 апреля 2020

Самый простой способ - изменить конечную точку призмы, чтобы она указала на другой сервер призмы, прежде чем запускать 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.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 всегда будет иметь конечную точку производства до того, как вы отправите sh в производство. Добавьте следующий раздел к package.json.

"husky": {
    "hooks": {
      "pre-commit": "yarn prisma:generate -p path/to/prisma.yml"
    }
  }
...