services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs-server
ports:
- "9000:9000"
- "9001:9001"
environment:
- RUSTFS_VOLUMES=/data
- RUSTFS_ADDRESS=0.0.0.0:9000
- RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
- RUSTFS_CONSOLE_ENABLE=true
- RUSTFS_ACCESS_KEY=rustfsadmin
- RUSTFS_SECRET_KEY=rustfsadmin
volumes:
- rustfs_data:/data
networks:
- automq_net
restart: unless-stopped
healthcheck:
test: ["CMD", "sh", "-c", "curl -f http://localhost:9000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 1.5. MC (MinIO Client)
mc-init:
container_name: mc-init-rustfs
image: minio/mc:latest
depends_on:
rustfs:
condition: service_healthy
networks:
- automq_net
entrypoint: >
/bin/sh -c "
echo 'Waiting for RustFS service...';
/usr/bin/mc alias set myrustfs http://rustfs:9000 rustfsadmin rustfsadmin;
echo 'RustFS is ready. Creating buckets...';
/usr/bin/mc mb myrustfs/automq-data;
/usr/bin/mc mb myrustfs/automq-ops;
echo 'Buckets created successfully. Keeping container alive.';
tail -f /dev/null
"
server1:
container_name: "automq-server1"
image: automqinc/automq:1.6.0
stop_grace_period: 1m
environment:
- KAFKA_S3_ACCESS_KEY=rustfsadmin
- KAFKA_S3_SECRET_KEY=rustfsadmin
- AWS_ACCESS_KEY_ID=rustfsadmin
- AWS_SECRET_ACCESS_KEY=rustfsadmin
- KAFKA_HEAP_OPTS=-Xms1g -Xmx4g -XX:MetaspaceSize=96m -XX:MaxDirectMemorySize=1G
- CLUSTER_ID=3D4fXN-yS1-vsQ8aJ_q4Mg
command:
- bash
- -c
- |
/opt/automq/kafka/bin/kafka-server-start.sh \
/opt/automq/kafka/config/kraft/server.properties \
--override cluster.id=$$CLUSTER_ID \
--override node.id=0 \
--override controller.quorum.voters=0@server1:9093 \
--override controller.quorum.bootstrap.servers=server1:9093 \
--override advertised.listeners=PLAINTEXT://server1:9092 \
--override s3.data.buckets='0@s3://automq-data?region=us-east-1&endpoint=http://rustfs:9000&pathStyle=true' \
--override s3.ops.buckets='1@s3://automq-ops?region=us-east-1&endpoint=http://rustfs:9000&pathStyle=true' \
--override s3.wal.path='0@s3://automq-data?region=us-east-1&endpoint=http://rustfs:9000&pathStyle=true'
networks:
- automq_net
depends_on:
- rustfs
- mc-init
networks:
automq_net:
driver: bridge
volumes:
rustfs_data: