Files
trailofbits-buttercup/dev/docker-compose
Riccardo Schirone 143a59c236 fuzzer_runner: split fuzzer's dependencies (#320)
Before this commit, the fuzzer dependend on clusterfuzz, which uses
protobuf 3.20. Since fuzzer-bot depended on common subpackage as well
and also common (and the other packages) require protobuf, we had to use
protobuf 3.20 everywhere. This old dependency however means that a lot
of packages can't be used in their "newer" versions, because they depend
on newer protobuf versions.

This commit splits the fuzzer into a separate fuzzer-runner that is
executed in a separate process inside a separate venv. fuzzer-runner
executes the clusterfuzz-heavy operations (e.g. fuzzing) and isolates the
clusterfuzz dependency, so that the rest of the system can use newer
protobuf version.

* split `fuzzer-bot` in `fuzzer-runner` and `fuzzer-bot`
* have a "full" optional dependency group in `common`, including `openlit`
  and `protobuf`, so that `fuzzer-runner` can use the lite version of `common`
  without bringing those heavy deps
* move `FuzzConfiguration`/`BuildConfiguration` in a separate common file
  that doesn't require to load all protobuf files. Again, in this way
  other components can just depend on the `common` "lite" version and not
  require protobuf stuff
* add `fuzzer-runner` as a separate venv inside the `fuzzer-bot` container
* add `RunnerProxy` class in fuzzer package to provide an interface to
  interact with the fuzzer-runner binary.
2025-09-10 09:52:08 +02:00
..

Docker Compose Development Setup

This directory contains the legacy Docker Compose setup for Buttercup CRS, preserved for developers who need to run specific components for quick testing and development.

Usage

From the repository root directory:

# Run all services
cd dev/docker-compose && docker-compose up -d

# Run specific services or profiles
cd dev/docker-compose && docker-compose --profile fuzzer-test up -d
cd dev/docker-compose && docker-compose --profile graphdb up -d

# Stop services
cd dev/docker-compose && docker-compose down

Configuration

  • env.template - Template for environment variables (copy to .env and customize)
  • env.dev.compose - Development-specific environment configuration
  • compose.yaml - Main compose file with all services

Notes

  • This setup is not recommended for production - use the Kubernetes deployment instead
  • Primarily useful for developers who need to run individual components for testing
  • The main deployment method is now Kubernetes via make deploy from the repository root
  • See the main README for the recommended setup instructions