Skip to main content

Docker Compose

The fastest way to run Sequenceware locally or on a single server.

Quick start

git clone https://github.com/nacorga/sequenceware.git
cd sequenceware
cp .env.example .env
docker compose up --build

This starts:

  • Backend (NestJS) on port 3000
  • Frontend (Angular) on port 4200
  • MongoDB on port 27017

With demo data

SEED_DEMO_DATA=true docker compose up --build

This seeds the database with example runs, policies, and approval requests so you can explore the dashboard immediately.

Environment variables

Configure via .env file or environment variables:

VariableDefaultDescription
MONGODB_URImongodb://mongo:27017/sequencewareMongoDB connection string
JWT_SECRETdev-secretSecret for JWT token signing
ADMIN_EMAILadmin@example.comDefault admin email
ADMIN_PASSWORDchangeme123Default admin password
PORT3000Backend port
CORS_ORIGINS*Allowed CORS origins
SEED_DEMO_DATAfalseSeed demo data on startup
FRONTEND_BASE_URLhttp://localhost:4200Frontend URL (for links in notifications)

Development mode

For development with hot-reload:

docker compose -f docker-compose.dev.yml up

This mounts source code as volumes for live reloading.

Production considerations

For production use of Docker Compose (single server):

  1. Change default credentials — update JWT_SECRET, ADMIN_EMAIL, ADMIN_PASSWORD
  2. Restrict CORS — set CORS_ORIGINS to your frontend URL
  3. Use managed MongoDB — point MONGODB_URI to MongoDB Atlas or similar
  4. Enable TLS — put a reverse proxy (nginx, Caddy) in front with SSL
  5. Backups — configure MongoDB backups
tip

For multi-server production deployments, see the self-hosted guide using Fly.io and Cloudflare Pages.

Services

services:
backend:
build: ./backend
ports: ["3000:3000"]
environment:
MONGODB_URI: mongodb://mongo:27017/sequenceware
JWT_SECRET: ${JWT_SECRET:-dev-secret}
depends_on: [mongo]

frontend:
build: ./frontend
ports: ["4200:80"]
depends_on: [backend]

mongo:
image: mongo:7
ports: ["27017:27017"]
volumes: [mongo-data:/data/db]