Power BI Report Server with MSSQL database in a Windows Server container.
2.3K
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:
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
Default Login: Use the credentials specified in pbirs_user and pbirs_password environment variables.
| 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 |
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:latest
The container exposes standard SSRS SOAP endpoints:
http://localhost/reportserver/ReportService2010.asmx?WSDLhttp://localhost/reportserver/ReportExecution2005.asmx?WSDLhttp://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/reports
This container is perfect for:
# 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 setup
All 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 testingmcr.microsoft.com/mssql/server:2022-latestwindows/amd64The 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
# 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-local
To modify the container:
Dockerfile for base image changesscripts/configure-pbirs.ps1 for SSRS configurationscripts/entrypoint.ps1 for startup behavior# 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.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.
Content type
Image
Digest
sha256:de7e9da41…
Size
5.2 GB
Last updated
5 months ago
docker pull ipierre1/ssrs-powerbi