Running locally with Docker

How to run locally with Docker.

Authgear is available as a Docker image. It depends on PostgreSQL (with pg_partman enabled) and Redis. To run it locally, the simplest way is to use docker-compose.

Create the project directory

Let's get started with creating a new directory.

mkdir myapp
cd myapp

Create docker-compose.yaml

The next step is to create docker-compose.yaml to setup PostgreSQL, Redis, and Authgear.

You can start with the following docker-compose.yaml:

version: "3"
services:
  db:
    image: postgres-pg-partman:latest
    build:
      context: ./postgres
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"
    ports:
      - "5432:5432"

  redis:
    image: redis:6.2.6
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"

  authgear:
    # Remember to replace the latest tag with the exact version you would like to use!
    image: quay.io/theauthgear/authgear-server:latest
    volumes:
      - ./authgear.yaml:/app/authgear.yaml
      - ./authgear.secrets.yaml:/app/authgear.secrets.yaml
    environment:
      DEV_MODE: "true"
      LOG_LEVEL: "debug"
    ports:
      - "3000:3000"

volumes:
  redis_data:
    driver: local
  db_data:
    driver: local

Note that we need to build the PostgreSQL image ourselves. We can do this with a simple Dockerfile.

Copy the following contents to postgres/Dockerfile

Create authgear.yaml and authgear.secrets.yaml

First, we need to create authgear.yaml and authgear.secrets.yaml. Authgear itself is a CLI program capable of generating a minimal configuration file.

Run the following command to generate minimal authgear.yaml and authgear.secrets.yaml:

This command is interactive and it will prompt you a series of questions. You want to turn off email verification because we do not have SMTP setup. We also need to adjust some endpoints so that Authgear can connect to other services in the network.

authgear.yaml and authgear.secrets.yaml are generated in your working directory.

Edit authgear.secrets.yaml

The three services run in the same network. We have to ensure Authgear can connect to PostgreSQL and Redis.

Since we do not have Elasticsearch in our docker-compose.yaml, we MUST remove the elasticsearch entry in authgear.secrets.yaml.

Edit authgear.secrets.yaml so that it looks like the following:

Start PostgreSQL and Redis

Authgear depends on them so they have to be started first.

Run database migration

Run the database migration:

Get it running

Run everything with:

Verify everything is working

Visit http://localhost:3000 and try signing up as a new user!

Last updated

Was this helpful?