Introduction

Grai consists of multiple different independent services including

Server

  • Postgres + Django
  • Redis
  • Celery + Celery Beat
  • flower

For more information about the server see Grai Server.

Web App

For more information about the web app see Grai Web App

Container Registry

We maintain up to date docker images for all of the Grai services on GitHub's Container Registry ghcr

ServiceImageTags
Serverghcr.io/grai-io/grai-core/grai-serverlatest, semver
Web Appghcr.io/grai-io/grai-core/grai-frontendlatest, semver

Deployment

Dependencies

Before you begin, make sure have access to both docker and docker-compose on your machine.

💡

If you haven't used Docker before, we recommend you check out the Docker Getting Started Guide (opens in a new tab). For more installation about Docker Compose, see the Docker Compose Installation Guide (opens in a new tab). If you are on Windows, you may need to install WSL2 (opens in a new tab) to run Docker.

Running the Server and frontend

We maintain a variety of up to date docker-compose deployment scripts in version control here (opens in a new tab). Which you can always use for reference.

Minimal

The minimal configuration is a good starting point for testing out Grai. It's composed of only the bare minimum number of services required to run the server and frontend. You can find a reference to the minimal configuration here (opens in a new tab).

This will provide a fully functional instance of the Grai application although some of the features like scheduled tasks may operate with reduced functionality.

Complete

The complete configuration contains all of the services required to run the full Grai application. You can find a reference to the complete configuration here (opens in a new tab)

Deploying

Once you've decided which configuration you want to use you can deploy it by running the following steps.

Copy the docker-compose.yml file

Open a terminal and navigate to whichever directory you intend to work from. Then copy your intended docker-compose.yml file into the work directory of your terminal

e.g. if you want to use the minimal configuration you would copy the following content into your compose file.

version: "3.7"
 
services:
  db:
    image: postgres:14.3-alpine
    environment:
      - POSTGRES_USER=grai
      - POSTGRES_PASSWORD=grai
      - POSTGRES_DB=grai
    ports:
      - 5432:5432
    healthcheck:
      test: "pg_isready -U grai"
      interval: 2s
      timeout: 2s
      retries: 15
 
  the_guide:
    image: ghcr.io/grai-io/grai-core/grai-server:latest
    ports:
      - 8000:8000
    environment:
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=grai
      - DB_USER=grai
      - DB_PASSWORD=grai
    depends_on:
      - db
      - redis
    healthcheck:
      test: "curl -f -v -H 'Accept: application/json' http://localhost:8000/health/"
      interval: 2s
      timeout: 5s
      retries: 10
      start_period: 20s
 
  frontend:
    image: ghcr.io/grai-io/grai-core/grai-frontend:latest
    ports:
      - 3000:80
    environment:
      - REACT_APP_API_URL=http://localhost:8000
    depends_on:
      - the_guide
 
  redis:
    image: redis/redis-stack:6.2.6-v9
    environment:
      - REDISGRAPH_ARGS=RESULTSET_SIZE 100000
    restart: always
    ports:
      - 6379:6379
      - 8001:8001

docker compose up

Once you've copied the compose file into your work directory you can run docker-compose up to start the services.

docker-compose up

It may take a few minutes for the services to start up but once they are running you should be able to access the frontend at http://localhost:3000 and the server at http://localhost:8000.

Under the default configuration, an admin user will be created with the following credentials.

UsernamePassword
null@grai.iosuper_secret