Power BI Reporting Services (PBIRS) 2025 containerized for development and testing environments.
β οΈ Important: This container is designed for development and testing purposes only. It is NOT recommended for production use.
This project is a modernized fork that builds upon the excellent work of previous contributors:
- Original Repository: Microsoft/mssql-docker - Microsoft's official SQL Server Docker images
- SSRS Implementation: SaViGnAnO/SSRS-Docker - Initial SSRS containerization by @SaViGnAnO
docker pull ipierre1/ssrs-powerbi:latest
docker run -d \
--name pbirs-dev \
-p 1433:1433 \
-p 80:80 \
-e ACCEPT_EULA=Y \
-e sa_password="YourStrong@Password123" \
-e pbirs_user="SSRSAdmin" \
-e pbirs_password="Admin@Password123" \
--memory 6048mb \
ipierre1/ssrs-powerbi:latest- Report Manager: http://localhost/reports
- Web Service: http://localhost/reportserver
- SQL Server: localhost:1433
Default Login: Use the credentials specified in pbirs_user and pbirs_password environment variables.
- OS: Windows containers support (Windows 10/11 or Windows Server)
- Memory: Minimum 6GB RAM allocated to Docker
- Storage: ~8GB available disk space
- Docker: Docker Desktop with Windows containers enabled
| Variable | Required | Default | Description |
|---|---|---|---|
ACCEPT_EULA |
β Yes | - | Must be set to Y to accept SQL Server EULA |
sa_password |
β Yes | - | SQL Server SA password (must meet complexity requirements) |
pbirs_user |
β No | SSRSAdmin |
SSRS administrator username |
pbirs_password |
β No | DefaultPass123! |
SSRS administrator password |
- Minimum 8 characters
- Must contain uppercase, lowercase, numbers, and special characters
- Cannot contain the username
version: '3.8'
services:
pbirs:
image: ipierre1/ssrs-powerbi:latest
container_name: pbirs-dev
ports:
- "1433:1433"
- "80:80"
environment:
- ACCEPT_EULA=Y
- sa_password="YourStrong@Password123"
- pbirs_user=SSRSAdmin
- pbirs_password="Admin@Password123"
deploy:
resources:
limits:
memory: 6G
volumes:
- pbirs_data:/var/opt/mssql
- reports_temp:/temp
restart: unless-stopped
volumes:
pbirs_data:
reports_temp:To use custom SSRS configurations, mount your configuration files:
docker run -d \
--name pbirs-custom \
-p 1433:1433 -p 80:80 \
-v /path/to/custom/rsreportserver.config:/Program Files/Microsoft SQL Server Reporting Services/SSRS/ReportServer/rsreportserver.config \
-e ACCEPT_EULA=Y \
-e sa_password="YourPassword" \
ipierre1/ssrs-powerbi:latestThe container exposes standard SSRS SOAP endpoints:
- ReportService2010:
http://localhost/reportserver/ReportService2010.asmx?WSDL - ReportExecution2005:
http://localhost/reportserver/ReportExecution2005.asmx?WSDL - ReportService2006:
http://localhost/reportserver/ReportService2006.asmx?WSDL
# Install SSRS PowerShell module
Install-Module -Name ReportingServicesTools
# Connect to SSRS
$credential = Get-Credential # Use your pbirs_user credentials
$proxy = New-WebServiceProxy -Uri "http://localhost/reportserver/ReportService2010.asmx?WSDL" -Credential $credential
# List reports
$reports = $proxy.ListChildren("/", $true)
$reports | Where-Object { $_.TypeName -eq "Report" }# Test basic connectivity
curl -u "SSRSAdmin:Admin@Password123" \
-H "Content-Type: application/json" \
http://localhost/reports/api/v2.0/folders
# Get report list
curl -u "SSRSAdmin:Admin@Password123" \
http://localhost/reports/api/v2.0/reportsThis container is perfect for:
- API Discovery: Explore SSRS endpoints for integration projects
- Mock Development: Generate OpenAPI specifications from real SSRS responses
- Testing: Validate report generation and deployment workflows
- CI/CD Integration: Automated testing of SSRS-dependent applications
# Use in your test Dockerfile
FROM ipierre1/ssrs-powerbi:latest AS pbirs-test
# Copy test reports
COPY test-reports/ /test-reports/
# Your test application
FROM node:16 AS test-runner
# ... your test setupAll images are available at: yourusername/pbirs
latest- Latest stable build from main branchv1.0.0,v1.1.0- Semantic version releasesmain-YYYYMMDD-<sha>- Development builds with date and commitpr-123- Pull request builds for testing
- Base Image:
mcr.microsoft.com/mssql/server:2022-latest - SSRS Version: SQL Server Reporting Services 2022
- Platform:
windows/amd64 - Size: ~8GB (includes full SQL Server + SSRS)
The container includes automatic health monitoring:
# Check container health
docker inspect --format='{{.State.Health.Status}}' pbirs-dev
# View health check logs
docker inspect --format='{{range .State.Health.Log}}{{.Output}}{{end}}' pbirs-dev# Test SQL Server connection
docker exec pbirs-dev powershell "Invoke-Sqlcmd -Query 'SELECT @@VERSION' -ServerInstance localhost -Username sa -Password 'YourPassword'"
# Test SSRS web interface
docker exec pbirs-dev powershell "Invoke-WebRequest -Uri 'http://localhost/reports' -UseBasicParsing"# Check Docker resources
docker system df
docker system prune # Clean up if needed
# Verify memory allocation (should be >= 6GB)
docker info | grep -i memory# Check service status inside container
docker exec pbirs-dev powershell "Get-Service | Where-Object {$_.Name -like '*Report*' -or $_.Name -like '*SQL*'}"
# View container logs
docker logs pbirs-dev --tail 50
# Interactive troubleshooting
docker exec -it pbirs-dev powershell# Test SA password
docker exec pbirs-dev powershell "sqlcmd -S localhost -U sa -P 'YourPassword' -Q 'SELECT 1'"
# Check SQL error logs
docker exec pbirs-dev powershell "Get-Content 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG'"# Increase memory if needed
docker update --memory 8g pbirs-dev
# Monitor resource usage
docker stats pbirs-dev- Windows machine with Docker Desktop
- Git for cloning the repository
# Clone this repository
git clone https://github.com/yourusername/SSRS-Docker.git
cd SSRS-Docker
# Build the image
docker build -t pbirs-local .
# Run your custom build
docker run -d \
--name pbirs-local-test \
-p 1433:1433 -p 80:80 \
-e ACCEPT_EULA=Y \
-e sa_password="YourPassword" \
pbirs-localTo modify the container:
- Edit
Dockerfilefor base image changes - Modify
scripts/configure-pbirs.ps1for SSRS configuration - Update
scripts/entrypoint.ps1for startup behavior
- Never use in production - This container uses evaluation licenses
- Default passwords - Always change default credentials
- Network exposure - Be careful about port exposure in production networks
- Vulnerability scanning with Trivy on every build
- SBOM generation for supply chain transparency
- Health monitoring to detect service issues
- No hardcoded secrets in the image
# Use strong passwords
export SA_PASSWORD="$(openssl rand -base64 32)"
export SSRS_PASSWORD="$(openssl rand -base64 32)"
# Limit network exposure
docker run -p 127.0.0.1:1433:1433 -p 127.0.0.1:80:80 ...
# Use Docker secrets in production-like environments
echo "$SA_PASSWORD" | docker secret create sa_password -We welcome contributions! This project builds on the foundation laid by @SaViGnAnO and aims to keep the SSRS Docker community thriving.
- Fork this repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Bug fixes and stability improvements
- π Documentation enhancements
- π§ͺ Additional test scenarios
- π§ Configuration options
- π Performance optimizations
- π Security improvements
This project is licensed under the MIT License - see the LICENSE file for details.
- Microsoft SQL Server: Subject to Microsoft licensing terms
- Original SSRS-Docker: MIT License by @SaViGnAnO
- Original Project: SaViGnAnO/SSRS-Docker
- Microsoft Docs: SQL Server in containers
- SSRS Documentation: Microsoft SSRS Docs
