Preface
Enterprises’ thirst for real-time data is driving significant shifts in data architecture. However, building efficient data streaming platforms faces two major bottlenecks: the severe cost and operational challenges of traditional Apache Kafka in cloud environments, and the architectural complexity or restrictive AGPL licensing of existing object storage solutions. These hurdles create significant barriers to cost-effective, scalable, and commercially viable real-time data processing. To address these challenges, AutoMQ and RustFS have formed a strategic partnership. This collaboration deeply integrates AutoMQ’s cloud-native, 100% Kafka-compatible stream processing with RustFS, a high-performance, Apache 2.0 licensed distributed object storage. By combining these two technologies, enterprises gain access to a next-generation Diskless Kafka platform that delivers a superior architecture, lower TCO, and complete avoidance of licensing risks.Hands-On Guide: Deploying AutoMQ with RustFS in 4 Steps
Precondition
Before starting, make sure you have Docker and Docker Compose installed and running on your system. This guide uses Docker Compose to deploy a decoupled AutoMQ and RustFS stack. We’ll solve the two main challenges: service startup dependency and automatic S3 bucket initialization.Deployment Instructions
With the precondition met, we’ll now build the stack. This process is broken down into the key phases of the deployment: first, defining all services in the complete docker-compose.yaml, then analyzing how they’re orchestrated, and finally, validating the end-to-end data flow.-
The S3 Backend-RustFS: This service acts as our S3-compatible storage.
healthcheck: This block is crucial. It tells Docker not to just assume the service is “on,” but to actively check its /health endpoint. Only when this check passes is the service considered “ready” to handle S3 requests.
-
The Bucket Initializer-mc-init: This is a small utility container whose only job is to create our S3 buckets.
depends_on: service_healthy: This line is the key to our automation. It explicitly tells Docker Compose: “Do not even start this mc-init container until the rustfs service’s healthcheck is passing.” This prevents errors where the script tries to create buckets on a service that isn’t ready.
-
The AutoMQ Service-server1: This is the main Kafka broker service.
-
depends_on: This service depends on both rustfs and mc-init being Up. This guarantees that when AutoMQ starts, the S3 backend is ready and the mc-init script has already finished creating the required buckets. -
Endpoint Override: The command block’s —override flags (e.g., endpoint=http://rustfs:9000) are critical. They redirect AutoMQ’s S3 requests away from the public internet and toward our own rustfs container within the Docker network.
-