Skip to content

ipierre1/ssrs-powerbi-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

43 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Power BI Reporting Services Docker image

Docker Version Docker Pulls GitHub release License: MIT

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.

Power BI Reporting Services 2025 in a Windows Container

Project History and Credits

This project is a modernized fork that builds upon the excellent work of previous contributors:

Original Work

Quick Start

Pull and Run

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

Access PBIRS

Default Login: Use the credentials specified in pbirs_user and pbirs_password environment variables.

Requirements

System Requirements

  • 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

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

Password Requirements

  • Minimum 8 characters
  • Must contain uppercase, lowercase, numbers, and special characters
  • Cannot contain the username

Configuration

Docker Compose Example

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:

Custom Configuration

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

API Testing and Development

SSRS Web Service Endpoints

The 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

PowerShell Example

# 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" }

REST API Testing

# 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

Development Usage

For API Discovery and Mocking

This 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

Integration with Testing Frameworks

# 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

Available Images and Tags

DockerHub Repository

All images are available at: yourusername/pbirs

Tag Strategy

  • latest - Latest stable build from main branch
  • v1.0.0, v1.1.0 - Semantic version releases
  • main-YYYYMMDD-<sha> - Development builds with date and commit
  • pr-123 - Pull request builds for testing

Image Information

  • 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)

πŸ” Monitoring and Health Checks

Built-in Health Check

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

Manual Health Verification

# 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"

Troubleshooting

Common Issues

Container Won't Start

# Check Docker resources
docker system df
docker system prune  # Clean up if needed

# Verify memory allocation (should be >= 6GB)
docker info | grep -i memory

SSRS Not Accessible

# 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

Database Connection Issues

# 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'"

Performance Optimization

# Increase memory if needed
docker update --memory 8g pbirs-dev

# Monitor resource usage
docker stats pbirs-dev

Building from Source

Prerequisites

  • Windows machine with Docker Desktop
  • Git for cloning the repository

Build Process

# 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

Custom Builds

To modify the container:

  1. Edit Dockerfile for base image changes
  2. Modify scripts/configure-pbirs.ps1 for SSRS configuration
  3. Update scripts/entrypoint.ps1 for startup behavior

Security Considerations

For Development Use Only

  • 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

Security Features

  • 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

Best Practices

# 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 -

Contributing

We welcome contributions! This project builds on the foundation laid by @SaViGnAnO and aims to keep the SSRS Docker community thriving.

How to Contribute

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Areas for Contribution

  • πŸ› Bug fixes and stability improvements
  • πŸ“š Documentation enhancements
  • πŸ§ͺ Additional test scenarios
  • πŸ”§ Configuration options
  • πŸš€ Performance optimizations
  • πŸ”’ Security improvements

License

This project is licensed under the MIT License - see the LICENSE file for details.

Third-Party Licenses

  • Microsoft SQL Server: Subject to Microsoft licensing terms
  • Original SSRS-Docker: MIT License by @SaViGnAnO

Community

About

Power BI Reporting Services 2025 (PBIRS) containerized for development and testing environments.

Topics

Resources

Stars

Watchers

Forks