feat(compose): cloud-emulators stack — MinIO + LocalStack v3 + Azurite (deployed on lattepanda)

This commit is contained in:
fabiorafaelcoutada 2026-07-12 20:51:27 +01:00
parent 8e5ba6ba93
commit b6f0baac7d

View file

@ -0,0 +1,70 @@
# cloud-emulators.yml — self-hosted cloud dev stack
#
# Deployed on lattepanda (192.168.0.40), docker compose:
# docker compose -f /opt/cloud-emulators/cloud-emulators.yml up -d
#
# Services:
# MinIO S3-compatible object store API :9000 Console :9001
# LocalStack AWS emulator (IAM/SQS/S3/…) edge :4566
# Azurite Azure Storage emulator blob :10000 queue :10001 table :10002
#
# Credentials live in Vaultwarden (self-hosted first policy).
# See docs/guides/selfhosted/cloud-emulators.md for CLI wiring.
name: cloud-emulators
services:
minio:
image: minio/minio:latest
container_name: minio
restart: unless-stopped
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?set MINIO_ROOT_PASSWORD in .env}
volumes:
- minio-data:/data
healthcheck:
test: ["CMD", "mc", "ready", "local"]
interval: 30s
timeout: 10s
retries: 3
localstack:
image: localstack/localstack:3 # v3 community (latest/2026+ demands LOCALSTACK_AUTH_TOKEN)
container_name: localstack
restart: unless-stopped
ports:
- "4566:4566"
environment:
SERVICES: s3,sqs,sns,iam,lambda,logs,cloudwatch,ssm,secretsmanager,dynamodb,iot
DEFAULT_REGION: eu-west-1
PERSISTENCE: "1"
volumes:
- localstack-data:/var/lib/localstack
- /var/run/docker.sock:/var/run/docker.sock
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:4566/_localstack/health"]
interval: 30s
timeout: 10s
retries: 3
azurite:
image: mcr.microsoft.com/azure-storage/azurite:latest
container_name: azurite
restart: unless-stopped
command: azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0 --location /data
ports:
- "10000:10000"
- "10001:10001"
- "10002:10002"
volumes:
- azurite-data:/data
volumes:
minio-data:
localstack-data:
azurite-data: