Pre-built container images for all Quarkus Super Heroes services are available at quay.io/quarkus-super-heroes. You can run the entire system or individual services using Docker Compose, or start any service in Quarkus Dev Mode for local development.

Running the Full System

Pick either the JVM or Native version from the table below and run the corresponding docker compose command from the repository root directory.

Description Docker Compose Command
JVM Java 25 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans
Native docker compose -f deploy/docker-compose/native.yml up --remove-orphans

To include the monitoring stack (Grafana, Loki, Tempo, Prometheus), append the monitoring compose file:

docker compose -f deploy/docker-compose/java25.yml -f deploy/docker-compose/monitoring.yml up --remove-orphans

Note: You may see errors as the applications start up. This can happen if an application completes startup before one of its required services (database, Kafka, etc.) is ready. This is normal. Once everything finishes starting up, the system will work fine.

Tip: Older versions of Docker used a standalone docker-compose binary. Modern Docker includes compose as a sub-command (docker compose). If docker compose does not work for you, try docker-compose instead.

Once running, the following services are available:

Service URL
Super Hero Battle UI http://localhost:8080
Event Statistics UI http://localhost:8085
Apicurio Schema Registry http://localhost:8086
Grafana (if monitoring enabled) http://localhost:3000

Running Individual Services

Each service can be run standalone with its own Docker Compose file, which starts only that service and its required infrastructure (database, etc.). Run the appropriate command from the service directory.

Service Port Docker Compose Command (JVM) Docker Compose Command (Native)
Hero REST API 8083 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Villain REST API 8084 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Fight REST API 8082 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Narration REST API 8087 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Event Statistics 8085 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Location gRPC API 8089 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans
Battle UI 8080 docker compose -f deploy/docker-compose/java25.yml up --remove-orphans docker compose -f deploy/docker-compose/native.yml up --remove-orphans

These per-service compose files start only the selected service and its direct infrastructure dependencies. They do not start the other application services.

Running in Dev Mode

Each service supports Quarkus Dev Mode, which provides live coding with automatic hot reload. From any service directory, run:

./mvnw quarkus:dev

Quarkus Dev Services will automatically start all required infrastructure (databases, Kafka, etc.) as containers. Docker or Podman must be running for Dev Services to work.

The Quarkus Dev UI is available at http://localhost:<port>/q/dev for each service.