Sign inSign up

up2metrics/prisma

By up2metrics

•Updated almost 2 years ago

Prima v1

Image
0

10K+

up2metrics/prisma repository overview

⁠Overview

Prisma1 servers can be run with Docker⁠. This page contains everything you need to know around the Docker setup and relevant worfklows.

⁠Prisma Docker image

The prisma Docker image is available via Docker Hub⁠. You can pull the latest released version of the image using the following command: :/

docker pull up2metrics/prisma:latest

⁠Common workflows

The Docker CLI⁠ and Docker Compose CLI⁠ are used to manage the Prisma servers.

Here's a quick rundown of the most important commands:

Note that these commands need to be executed in the directory where the Docker Compose file for your Prisma server is available.

⁠Docker Compose file

Here is an overview of all properties you need to configure on the prisma Docker image inside your Docker Compose file. The all-uppercase words represent placeholders for the configuration variables you need to provide for your Prisma setup.

version: '3'
services:
  prisma:
    image: up2metrics/prisma:__LATEST_PRISMA_VERSION__
    restart: always
    ports:
    - "4466:4466"
    environment:
      PRISMA_CONFIG: |
        managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__
        port: __YOUR_PRISMA_SERVER_PORT__
        databases:
          default:
            connector: __YOUR_DATABASE_CONNECTOR__
            host: __YOUR_DATABASE_HOST__
            port: __YOUR_DATABASE_PORT__
            user: __YOUR_DATABASE_USER__
            password: __YOUR_DATABASE_PASSWORD__
            connectionLimit: __YOUR_CONNECTION_LIMIT__

Most notably most of your configuration takes place in the PRISMA_CONFIG environment variable.

Despite seemingly following the YAML key-value structure, PRISMA_CONFIG is actually speficied as a string. The pipe character | right after PRISMA_CONFIG denotes the beginning of a multi-line string in YAML⁠.

⁠PRISMA_CONFIG reference
⁠Root properties

These are the root properties of PRISMA_CONFIG:

KeyTypeDescription
managementApiSecretstringThe Management API secret is used by the Prisma CLI to generate authentication tokens and authenticate its requests against the Prisma server. Example: mysecret42
portnumberThe port on which the Prisma server is running. Example: 4466
databasesobjectSpecifies to which databases the Prisma server should connect to.

Prisma does not yet support connecting multiple databases to a Prisma server. You can track the progress of this feature here⁠.

⁠Database properties

Each database object in the databases object needs to include the following properties:

KeyTypeDescription
connectorstringSpecifies which database connector to be used. Learn more⁠.
migrationsbooleanSpecifies if Prisma should be able to perform database migrations. Learn more⁠.
hoststringThe IP address or URL of the machine hosting the database. Example: 127.0.0.1
portnumberThe post where the database is running.
databasestringThe database name. Default: prisma
userstringThe database user. Example: root
passwordstringThe password for the database user specified in user. Example: myDBpassword42
sslbooleanEnable SSL
connectionLimitnumberThe maximum number of database connections (must be at least 2). Learn more⁠.

⁠Debugging

To get insights into the internals of your Prisma server, you can check the logs of the Docker container.

⁠Accessing Docker logs

View the raw logs from the running Docker containers:

docker-compose logs
⁠Verify Docker containers

Verify that the containers are running:

docker ps

You should see an output similar to this:

$ docker ps
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS              PORTS                    NAMES
2b799c529e73        up2metrics/prisma:latest            "/bin/sh -c /app/stab&"   17 hours ago        Up 7 hours          0.0.0.0:4466->4466/tcp   myapp_prisma_1
757dfba212f7        mysql:5.7                           "docker-entrypoint.sb&"   17 hours ago        Up 7 hours          3306/tcp                 prisma-db

This is helpful when you're getting an error message saying Error response from daemon: No such container.

⁠Logging slow queries

To monitor and log slow queries, you can set the following environment variables in your Docker Compose file:

  • SLOW_QUERIES_LOGGING: Enable slow query logging with true or false
  • SLOW_QUERIES_LOGGING_THRESHOLD: The treshold (in miliseconds) for queries for queries to be logged. To log all queries, simply provide the value "0".

Here is an example:

version: '3'
services:
  prisma:
    image: up2metrics/prisma:latest
    restart: always
    ports:
    - "4466:4466"
    environment:
      SLOW_QUERIES_LOGGING: "true"
      SLOW_QUERIES_LOGGING_THRESHOLD: "0"
      PRISMA_CONFIG: |
        managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__
        port: __YOUR_PRISMA_SERVER_PORT__
        databases:
          default:
            connector: __YOUR_DATABASE_CONNECTOR__
            host: __YOUR_DATABASE_HOST__
            port: __YOUR_DATABASE_PORT__
            user: __YOUR_DATABASE_USER__
            password: __YOUR_DATABASE_PASSWORD__
            connectionLimit: __YOUR_CONNECTION_LIMIT__

In the logs of your Docker container (which you can access with docker logs __CONTAINER_ID__), you can then see the the execution time for queries above specified threshold, for example:

SLOW QUERY - DURATION: 17
QUERY: [{"query":"{\n  users {\n    id\n    email\n    name\n  }\n}\n","variables":{}},{"query":"{\n  users {\n    id\n    email\n
   name\n  }\n}\n","variables":{}}]

You can find more info in this⁠ GitHub issue.

⁠Hard resetting the Docker environment

If your local Prisma server is in an unrecoverable state, it might be necessary to completely reset it:

docker-compose kill
docker-compose down
docker-compose up -d

Be careful as these commands will reset all data in your local Prisma server (including deployed Prisma APIs).

Tag summary

Content type

-

Digest

Size

152.2 MB

Last updated

about 5 years ago

docker pull up2metrics/prisma