Quickstart with Docker
This guide will help you get the Hasura GraphQL engine and a Postgres database to store its metadata running as Docker containers using Docker Compose. This is the easiest way to set up Hasura GraphQL engine on your local environment.
You'll need to have Docker installed in order to run the container. Check out the Docker documentation for instructions.
Step 1: Get the docker-compose file
The hasura/graphql-engine/install-manifests repo contains all installation manifests required to deploy Hasura anywhere. Get the docker compose file from there:
# in a new directory run
# or run
curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml -o docker-compose.yml
Step 2: Run Hasura GraphQL engine
The following command will run Hasura GraphQL engine along with a Postgres database to store its metadata.
$ docker compose up -d
Check if the containers are running:
$ docker ps
CONTAINER ID IMAGE ... CREATED STATUS PORTS ...
097f58433a2b hasura/graphql-engine ... 1m ago Up 1m 8080->8080/tcp ...
b0b1aac0508d postgres ... 1m ago Up 1m 5432/tcp ...
Step 3: Connect a database
http://localhost:8080/console to open the Hasura console.
Data -> Manage -> Connect Database:
Enter your database connection URL. (See the note below if you do not have an existing database)
If you are looking to start setting up a backend from scratch, we recommend using Postgres as the database.
If you do not have an existing Postgres database, you can choose to connect to the Postgres database that was created
along with Hasura (to store its metadata) and use it as a data source as well. The docker-compose file has an additional
PG_DATABASE_URL which points to the created metadata database. You can use this env var to connect the same
database as a data source and continue.
Step 4: Try out Hasura
Create a table
On the Hasura console, navigate to
Data -> Create table and create a sample table called
profiles with the following
id SERIAL PRIMARY KEY, -- serial -> auto-incrementing integer
Now, insert some sample data into the table using the
Insert Row tab of the
Try out a query
Head to the
API tab in the console and try running the following query:
You'll see that you get all the inserted data!
For a full hands-on tour of Hasura, check out our 30-Minute Hasura Basics Tutorial.
Stay up to date
We release new features every month. Sign up for our newsletter by using the link below. We send newsletters only once a month. https://hasura.io/newsletter/.
- Database modeling: Learn how to model your database schema, as well as how to extend it.
- Querying data: Use GraphQL queries to query data from your GraphQL API.
- Inserting data: Use GraphQL mutations to insert data into your GraphQL API.
There are several options for the implementation of business logic, depending on your use case.
- Actions: Actions can be used if you'd like to extend your GraphQL schema by integrating with a REST endpoint.
- Remote schemas: If you have an existing GraphQL server or if you're comfortable with implementing one, you can use remote schemas.
- Event triggers: To trigger a serverless function based on a database event, use event triggers.
- Scheduled triggers: Scheduled triggers are used to execute custom business logic at specific points in time.
Set up Hasura migrations to track your database alterations. This will make it easier to move to a different environment (e.g. staging or prod) later.
Secure your endpoint
Add an admin secret to make sure that your GraphQL endpoint and the Hasura console are not publicly accessible.
Detailed Docker setup
This was a quickstart guide to get the Hasura GraphQL engine up and running quickly. For more detailed instructions on deploying using Docker, check out Run Hasura GraphQL engine using Docker.
Get Started with Hasura today - Watch video guide.