azura
Developer control plane for local Azure emulation, events, and storage workflows
222
Azura is a local-first control plane for building, testing, and debugging cloud workflows.
It provides a unified UI to work with:
Think: Postman + LocalStack + Azure Portal (simplified for developers)
docker run -d -p 3000:3000 --name azura sadhasivam/azura:latest
Open:
http://localhost:3000
docker run -d \
-p 3000:3000 \
-v azura-data:/app/data \
--name azura \
sadhasivam/azura:latest
services:
azura:
image: sadhasivam/azura:0.1.0-rc.1
container_name: azura
ports:
- "3000:3000"
environment:
# Sentry Configuration (optional - set to false to disable)
- NEXT_PUBLIC_AZURA_SENTRY_ENABLED=false
- NEXT_PUBLIC_AZURA_SENTRY_DSN=https://[email protected]/4511208104853504
- NEXT_PUBLIC_AZURA_SENTRY_ENVIRONMENT=production
- VERCEL=1
# Application Configuration
- NODE_ENV=production
- NEXT_PUBLIC_APP_URL=http://localhost:3000
volumes:
# Persist PGlite database
- azura-data:/app/data
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/api/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
interval: 30s
timeout: 3s
retries: 3
start_period: 5s
networks:
- azura-network
# Optional: Azurite Storage Emulator
azurite:
image: mcr.microsoft.com/azure-storage/azurite:latest
container_name: azurite
ports:
- "10000:10000" # Blob service
- "10001:10001" # Queue service
- "10002:10002" # Table service
volumes:
- azurite-data:/data
command: azurite --blobHost 0.0.0.0 --queueHost 0.0.0.0 --tableHost 0.0.0.0 --loose
restart: unless-stopped
networks:
- azura-network
# Optional: Event Hubs Emulator
eventhubs:
image: mcr.microsoft.com/azure-messaging/eventhubs-emulator:latest
container_name: eventhubs-emulator
ports:
- "5672:5672" # AMQP
environment:
- ACCEPT_EULA=Y
- BLOB_SERVER=azurite
- METADATA_SERVER=azurite
volumes:
- eventhubs-data:/data
- ./.kirukkal/event-config.json:/Eventhubs_Emulator/ConfigFiles/Config.json
restart: unless-stopped
depends_on:
- azurite
networks:
- azura-network
# Optional: Google Pub/Sub Emulator
pubsub:
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators
container_name: pubsub-emulator
ports:
- "8085:8085" # Pub/Sub
command: gcloud beta emulators pubsub start --host-port=0.0.0.0:8085
restart: unless-stopped
networks:
- azura-network
volumes:
azura-data:
azurite-data:
eventhubs-data:
networks:
azura-network:
driver: bridge
-- event-config.json
{
"UserConfig": {
"NamespaceConfig": [
{
"Type": "EventHub",
"Name": "emulatorNs1",
"Entities": [
{
"Name": "eh1",
"PartitionCount": 2,
"ConsumerGroups": []
},
{
"Name": "eh2",
"PartitionCount": 2,
"ConsumerGroups": []
}
]
}
],
"LoggingConfig": {
"Type": "File"
}
}
}
Azura follows a simple workflow model:
Home โ Explore โ Build โ Observe
| Tag | Description |
|---|---|
latest | Latest stable release |
x.y.z | Specific version |
x.y.z-rc.n | Release candidate |
Images are automatically built from Git tags:
git tag -a v0.1.0 -m "Release"
git push origin v0.1.0
Azura exposes:
GET /api/health
| Variable | Default | Description |
|---|---|---|
PORT | 3000 | Application port |
HOSTNAME | 0.0.0.0 | Bind address |
/app/data (mount a volume for persistence)Cloud tooling today is:
Azura simplifies this into a single developer experience.
This structure:
Content type
Image
Digest
sha256:2b9ea6edeโฆ
Size
90 MB
Last updated
3 months ago
docker pull sadhasivam/azura:0.1.0-rc.2