Docker¶
m365-brain provides a single Dockerfile and docker-compose.yaml for local development. The sync worker runs as a background thread inside the Reflex web app, or as a separate process via m365-brain worker.
Docker Compose¶
The docker-compose.yaml runs the full stack locally: PostgreSQL, the Reflex admin UI, and a separate sync worker process. An Azurite blob emulator is available via the azurite profile.
Start full stack¶
docker compose up --build # build + start all services
docker compose up -d postgres # start only postgres (for local dev against pg)
docker compose --profile azurite up # include Azurite blob emulator
docker compose down -v # stop + remove volumes
Azurite (local Azure Blob Storage)¶
Start Azurite via the profile:
Use the well-known Azurite development credentials in your .env:
AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
AZURE_STORAGE_CONTAINER=m365-vaults-dev
AZURE_STORAGE_PREFIX=local/
Stop Azurite¶
Azurite data is ephemeral by default. Add a volume mount if you need persistence.