Skip to content

Deploying Nemesis with Docker Compose

In general, we recommend that people use the ./tools/nemesis-ctl.sh script to deploy Nemesis. However, more complex deployment scenarios will require understanding how to deploy Nemesis components manually using Docker Compose. The documentation below details how you can launch Nemesis in a variety

Use Published Production Docker Images

Step 1 - Configure environment variables

cp env.example .env
vim .env

Step 2 - Pull and start the images

The examples below show various ways you can pull and start Nemesis.

Example 1: Start production images (no monitoring/jupyter)

docker compose -f compose.yaml up -d

Example 2: Start production images + monitoring

NEMESIS_MONITORING=enabled \
docker compose \
  -f compose.yaml \
  --profile monitoring \
  up -d

Example 3: Start production images + monitoring + jupyter

NEMESIS_MONITORING=enabled \
docker compose \
  -f compose.yaml \
  -f compose.prod.build.yaml \
  --profile monitoring \
  --profile jupyter
  up -d

Building and Using Production Images Locally

Step 1 - Build base images

docker compose -f compose.base.yaml build

Step 2 - Build & then start production images

Example 4: Build & then start production images without monitoring/jupyter

docker compose \
  -f compose.yaml \
  -f compose.prod.build.yaml \
  up --build -d

Example 5: Build & then start production images with monitoring

NEMESIS_MONITORING=enabled \
docker compose \
  -f compose.yaml \
  -f compose.prod.build.yaml \
  --profile monitoring \
  up --build -d

Building and Using Development Images

Development images are not published and must be built locally. If you make any local modifications to project code, you need to build + run the development images.

The easiest method to build + run dev images is to just use the dev target instead of prod with ./tools/nemesis-ctl.sh :

./tools/nemesis-ctl.sh start dev [--monitoring] [--jupyter]

Step 1 - Configure environment variables

cp env.example .env
vim .env

Step 2 - Build base images

docker compose -f compose.base.yaml build

Step 3 - Build and start dev images

Example 6: Build and start dev images without monitoring/jupyter (implicitly merges compose.yaml and compose.override.yaml)

docker compose up -d

Example 7: Build and start dev images with monitoring + jupyter

NEMESIS_MONITORING=enabled \
docker compose \
  --profile monitoring \
  --profile jupyter \
  up -d