A collection of useful Docker-related scripts and Docker Compose files for quickly spinning up local development environments for various messaging platforms and supporting services.
- Overview
- Prerequisites
- Directory Structure
- Supported Services
- Usage
- Configuration
- Troubleshooting
- References
This repository provides Docker Compose files and helper scripts to run popular messaging platforms and supporting services locally or on a remote Docker host. It is designed for developers who need to test, develop, or demo distributed systems with minimal setup.
- Docker (v20+ recommended)
- Docker Compose (v2+ recommended)
- (Optional) Git for cloning the repository
.
├── .docker/
│ ├── config/
│ │ └── servicebusemulator_config.json
│ ├── docker-compose-aws.yml
│ ├── docker-compose-azure.yml
│ ├── docker-compose-kafka.yml
│ ├── docker-compose-pulsar.yml
│ ├── docker-compose-rabbitmq.yml
│ ├── docker-compose-seq.yml
│ ├── docker-compose-redis.yml
│ ├── docker-compose-jaeger.yml
│ ├── docker-compose-include-all.yml
│ ├── docker-compose-all-messaging-platforms.txt
│ └── docker-compose-all-services.txt
└── README.md
- AWS LocalStack: Emulates AWS cloud services locally.
- Azure Service Bus Emulator: Local emulator for Azure Service Bus.
- Apache Kafka: Distributed event streaming platform.
- Apache Pulsar: Distributed pub-sub messaging system.
- RabbitMQ: Widely used message broker.
- Redis: In-memory data store.
- Seq: Log server for structured log data.
- Jaeger: Distributed tracing system.
All Docker Compose files are located in the .docker
directory. Use the following commands from the repository root.
docker compose -f .docker/docker-compose-kafka.yml -p kafka up -d
docker compose -f .docker/docker-compose-kafka.yml -p kafka down
To start or stop all messaging platforms at once, use the commands in .docker/docker-compose-all-messaging-platforms.txt
.
# Start all
docker-compose -f .docker/docker-compose-aws.yml -p aws up -d && ^
docker-compose -f .docker/docker-compose-kafka.yml -p kafka up -d && ^
docker-compose -f .docker/docker-compose-pulsar.yml -p pulsar up -d && ^
docker-compose -f .docker/docker-compose-rabbitmq.yml -p rabbitmq up -d && ^
docker-compose -f .docker/docker-compose-azure.yml -p azure up -d
# Stop all
docker-compose -f .docker/docker-compose-aws.yml -p aws down && ^
docker-compose -f .docker/docker-compose-kafka.yml -p kafka down && ^
docker-compose -f .docker/docker-compose-pulsar.yml -p pulsar down && ^
docker-compose -f .docker/docker-compose-rabbitmq.yml -p rabbitmq down && ^
docker-compose -f .docker/docker-compose-azure.yml -p azure down
# Start all
docker compose -f .docker/docker-compose-aws.yml -p aws up -d && \
docker compose -f .docker/docker-compose-kafka.yml -p kafka up -d && \
docker compose -f .docker/docker-compose-pulsar.yml -p pulsar up -d && \
docker compose -f .docker/docker-compose-rabbitmq.yml -p rabbitmq up -d && \
docker compose -f .docker/docker-compose-azure.yml -p azure up -d
# Stop all
docker compose -f .docker/docker-compose-aws.yml -p aws down && \
docker compose -f .docker/docker-compose-kafka.yml -p kafka down && \
docker compose -f .docker/docker-compose-pulsar.yml -p pulsar down && \
docker compose -f .docker/docker-compose-rabbitmq.yml -p rabbitmq down && \
docker compose -f .docker/docker-compose-azure.yml -p azure down
To start or stop all supporting services (Redis, Seq, Jaeger), use the commands in .docker/docker-compose-all-services.txt
.
docker-compose -f .docker/docker-compose-redis.yml -p redis up -d && ^
docker-compose -f .docker/docker-compose-seq.yml -p seq up -d && ^
docker-compose -f .docker/docker-compose-jaeger.yml -p jaeger up -d
docker compose -f .docker/docker-compose-redis.yml -p redis up -d && \
docker compose -f .docker/docker-compose-seq.yml -p seq up -d && \
docker compose -f .docker/docker-compose-jaeger.yml -p jaeger up -d
You can use .docker/docker-compose-include-all.yml
to include all messaging platforms in a single network for integration testing.
docker compose -f .docker/docker-compose-include-all.yml -p messaging_platforms up -d
- Azure Service Bus Emulator: Configuration is in
.docker/config/servicebusemulator_config.json
. Edit this file to customize namespaces, queues, topics, and subscriptions. - Passwords: Some services (e.g., SQL Edge for Azure emulator) require strong passwords. Update environment variables as needed.
- Volumes: Data is persisted in
~/.docker-data
by default for some services.
- Volume Mount Errors: When using Docker contexts (e.g., remote Docker hosts), ensure that configuration files exist on the remote server.
- Port Conflicts: Make sure required ports are free before starting services.
- Service Health: Some services depend on others (e.g., Azure emulator depends on SQL Edge). If a service fails to start, check logs and dependencies.
- Resource Usage: Running all services simultaneously may require significant system resources.
- Docker Compose Documentation
- LocalStack Documentation
- Azure Service Bus Emulator
- Apache Kafka
- Apache Pulsar
- RabbitMQ
- Redis
- Seq
- Jaeger