> ## Documentation Index
> Fetch the complete documentation index at: https://docs.specterops.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker Compose Documentation

# 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

```bash theme={null}
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)**

```bash theme={null}
docker compose -f compose.yaml up -d
```

**Example 2: Start production images + monitoring**

```bash theme={null}
NEMESIS_MONITORING=enabled \
docker compose \
  -f compose.yaml \
  --profile monitoring \
  up -d
```

**Example 3: Start production images + monitoring + jupyter**

```bash theme={null}
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

```bash theme={null}
docker compose -f compose.base.yaml build
```

### Step 2 - Build & then start production images

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

```bash theme={null}
docker compose \
  -f compose.yaml \
  -f compose.prod.build.yaml \
  up --build -d
```

**Example 5: Build & then start production images with monitoring**

```bash theme={null}
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` :

```bash theme={null}
./tools/nemesis-ctl.sh start dev [--monitoring] [--jupyter]
```

### Step 1 - Configure environment variables

```bash theme={null}
cp env.example .env
vim .env
```

### Step 2 - Build base images

```bash theme={null}
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)**

```bash theme={null}
docker compose up -d
```

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

```bash theme={null}
NEMESIS_MONITORING=enabled \
docker compose \
  --profile monitoring \
  --profile jupyter \
  up -d
```
