Docker-based local development

Run the Inngest Dev Server in Docker alongside your local app.

Use the Inngest Docker image to run the Dev Server locally or in CI. You can run it as a standalone container or add it to a Docker Compose project. For the rest of the local development workflow, see Local Development.

Docker image

The inngest/inngest image is available on Docker Hub. Pull the latest image before you start. You can check GitHub releases for available versions.

docker pull inngest/inngest

Standalone Docker container

Expose ports 8288 and 8289, and pass your app's serve() URL to inngest dev with -u. This example assumes your app runs on your host machine at port 3000:

docker run -p 8288:8288 -p 8289:8289 \
  inngest/inngest \
  inngest dev -u http://host.docker.internal:3000/api/inngest

host.docker.internal lets the container reach the app on your host machine. Use a different hostname if your Docker network requires one. Open http://localhost:8288 to use the Dev Server. Port 8289 supports connect().

If you decide to run the Dev Server on another port, you will need to set the INNGEST_BASE_URL environment variable in your app to point to the correct port. This value defaults to http://localhost:8288.

Docker Compose

If your app already uses Docker Compose, add the Dev Server as another service. This docker-compose.yaml example assumes your app is built from ./app and exposes its serve() endpoint at /api/inngest:

services:
  app:
    build: ./app
    environment:
      - INNGEST_DEV=1
      - INNGEST_BASE_URL=http://inngest:8288
    ports:
      - '3000:3000'
  inngest:
    image: inngest/inngest
    command: 'inngest dev -u http://app:3000/api/inngest'
    ports:
      - '8288:8288'
      - '8289:8289'

In this example, we have two services: app and inngest. The app service is your application, and the inngest service is the Inngest Dev Server. There are a few key configurations to note:

  • The INNGEST_DEV=1 environment variable tells the Inngest SDK it should connect to the Dev Server*.
  • The INNGEST_BASE_URL=http://inngest:8288 environment variable tells the Inngest SDK where the Dev Server is running. In our example, the inngest service is running on port 8288 (the default Dev Server port).
  • The command: 'inngest dev -u http://app:3000/api/inngest' command tells the Dev Server where to find your app within the Docker network. In this example, the app service is running on port 3000.
  • The ports configuration exposes the Dev Server on port 8288 so you can view this on your host machine in the browser. It also exposes 8289 which is used for connect().

SDKs default to production, sending data to the cloud. Setting INNGEST_DEV=1 explicitly enables dev mode, which connects to the Dev Server and disables signature verification.