A Docker Compose-based local development environment providing Azure service emulators and database services for development and testing.
This repository provides a complete local development environment using Docker containers for commonly used Azure services and databases. It includes PowerShell and Zsh helper functions to manage individual services easily.
The environment includes the following services:
-
SQL Server (Azure SQL Edge) - Port 1433
- User:
sa - Password:
letme!n123 - Data volumes:
~/SQL/Dataand~/SQL/SystemDbs - Health check enabled
- User:
-
Redis - Port 6379
- In-memory data store and cache
-
Azurite - Azure Storage Emulator
- Blob Storage: Port 10000
- Queue Storage: Port 10001
- Table Storage: Port 10002
- Data volume:
~/azurite
-
Azure Service Bus Emulator - Port 5672
- Configuration volume:
~/ASB/ - Depends on SQL Server
- Configuration volume:
-
Cosmos DB Emulator - Ports 8081, 10250-10254, 1234
- Data Explorer: Port 1234 (http://localhost:1234)
- Management endpoint: Port 8081
- HTTP protocol enabled
- Redis Commander - Port 8081
- Web-based Redis management interface
- Access at: http://localhost:8081
- Docker Desktop installed and running
- PowerShell (Windows) or Zsh (macOS/Linux)
- Sufficient disk space for container images and data volumes
git clone https://github.com/ObsidianPhoenix/DevelopmentEnvironment.git
cd DevelopmentEnvironment-
Import the helper functions:
. .\powershell-helpers.ps1
-
Start all services:
Start-AllDevDocker
-
Source the helper functions:
source ./zsh-helpers.sh -
Start all services:
start-alldevdocker
Windows:
Stop-AllDevDockermacOS/Linux:
stop-alldevdocker| Service | Start | Stop | Restart |
|---|---|---|---|
| SQL Server | Start-Sql |
Stop-Sql |
Restart-Sql |
| Redis | Start-Redis |
Stop-Redis |
- |
| Azurite | Start-Azurite |
Stop-Azurite |
- |
| Service Bus | Start-Asb |
Stop-Asb |
- |
| Cosmos DB | Start-Cosmos |
Stop-Cosmos |
- |
| Service | Start | Stop |
|---|---|---|
| SQL Server | start-sql |
stop-sql |
| Redis | start-redis |
stop-redis |
| Cosmos DB | start-cosmos |
stop-cosmos |
# Connection string
Server=localhost,1433;Database=master;User Id=sa;Password=letme!n123;TrustServerCertificate=True;# Connection string
localhost:6379# Connection string
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;# Endpoint
https://localhost:8081
# Data Explorer
http://localhost:1234# Web Interface
http://localhost:8081Update-DevEnvironment # Windows
update-devenvionrment # macOS/Linuxdocker-compose logs -f [service-name]docker-compose down -vAll services are connected to a shared Docker bridge network named DevelopmentNetwork, allowing inter-service communication using service names as hostnames.
Data is persisted in the following directories on your host machine:
- SQL Server:
~/SQL/Dataand~/SQL/SystemDbs - Azurite:
~/azurite - Service Bus:
~/ASB/
- Check that port 1433 is not already in use
- Verify Docker has sufficient resources allocated
- Check SQL Server logs:
docker logs sql
- Ensure you're accessing via HTTP (not HTTPS) for the explorer on port 1234
- Check allocated memory (Cosmos requires significant resources)
- Verify no other services are using the required ports
- Modify port mappings in
docker-compose.ymlif needed
Feel free to submit issues or pull requests for improvements to this development environment configuration.
This project is provided as-is for personal development use.