Pre-configured SQL Server for WorkflowGen. v10 & v9 Linux production-ready. Windows dev/test only.
10K+
Pre-configured Microsoft SQL Server for supported WorkflowGen versions.
| Platform | SQL Server Edition | Production Status | Use Case |
|---|---|---|---|
| v10 Linux | SQL Server 2025 | ✅ Production-Ready | Production and development |
| v10 Windows (ltsc2019/ltsc2022) | SQL Server 2025 Express | ⚠️ Development/Testing Only | Development and testing only |
| v9.3.1+ Linux | SQL Server 2022 | ✅ Production-Ready | Production and development |
| v9.3.0 and earlier Linux | SQL Server 2019 | ✅ Production-Ready | Production and development |
| v8 Linux | SQL Server 2019 | ✅ Production-Ready | Production and development |
| v9 Windows (ltsc2019/ltsc2022) | SQL Server Express 2017 | ⚠️ Development/Testing Only | Development and testing only |
| v8 Windows (ltsc2019) | SQL Server Express 2017 | ⚠️ Development/Testing Only | Development and testing only |
Use a database image version that matches your WorkflowGen application version.
| WorkflowGen Version | Recommended Database Tag (Linux) | Windows Tag | Status |
|---|---|---|---|
| 10.5.0 | 10.5.0-ubuntu-24.04 | 10.5.0-express-win-ltsc2019 or 10.5.0-express-win-ltsc2022 | ✅ Production (Linux) |
| 9.3.1+ | 9.7.0-ubuntu-22.04 | 9.7.0-express-win-ltsc2019 or 9.7.0-express-win-ltsc2022 | ✅ Production (Linux) |
| 9.3.0 and earlier | {version}-ubuntu-18.04 | {version}-express-win-ltsc2019 | ✅ Supported |
| 8.x | {version}-ubuntu-18.04 | {version}-express-win-ltsc2019 | ✅ Supported |
⚠️ WorkflowGen v7.x is unsupported. Legacy images remain available; upgrade to a supported version.
ltsc2019 image. Windows 10 does not support Windows Server 2022 container images.ltsc2022 images. Consult Microsoft's Windows container version compatibility matrix when the host and container versions differ.docker volume create wfgen-sql-data
docker run -d --name wfgen-sql --env-file ./database.env \
-v wfgen-sql-data:/var/opt/mssql -p 1433:1433 \
advantys/workflowgen-sql:10.5.0-ubuntu-24.04
⚠️ NOT FOR PRODUCTION - Express Edition limits: 50GB database, the lesser of 1 socket or 4 cores, 1.4GB RAM. Use Linux image for production.
Choose the tag that matches the Windows container host:
ltsc2022for Windows Server 2022 orltsc2019for Windows Server 2019.
docker volume create wfgen-sql-data
docker run -d --name wfgen-sql --env-file .\database.env `
-v wfgen-sql-data:C:\wfgen\sql -p 1433:1433 `
advantys/workflowgen-sql:10.5.0-express-win-ltsc2022
For Windows Server 2019, use
advantys/workflowgen-sql:10.5.0-express-win-ltsc2019.
docker volume create wfgen-sql-data
docker run -d --name wfgen-sql --env-file ./database.env \
-v wfgen-sql-data:/var/opt/mssql -p 1433:1433 \
advantys/workflowgen-sql:9.7.0-ubuntu-22.04
Other versions: 9.2.11-ubuntu-18.04 (v9 SQL 2019), 8.3.5-ubuntu-18.04 (v8 SQL 2019)
- Check the version compatibility matrix for your specific version.
# Create volume for database persistence
docker volume create wfgen-sql-data
# Run container (examples: 9.7.0 or 8.3.5)
docker run -d `
--name wfgen-sql `
--env-file .\database.env `
-v wfgen-sql-data:C:\wfgen\sql `
-p 1433:1433 `
advantys/workflowgen-sql:9.7.0-express-win-ltsc2019
# Or, for Windows Server 2022:
# advantys/workflowgen-sql:9.7.0-express-win-ltsc2022
# Or for v8:
# advantys/workflowgen-sql:8.3.5-express-win-ltsc2019
Required for all images:
| Variable | Description | Required |
|---|---|---|
ACCEPT_EULA | Accept SQL Server EULA (Y or N) | ✅ Yes (Linux only) |
SA_PASSWORD | SQL Server SA account password (see password requirements) | ✅ Yes |
WFGEN_DATABASE_USER_PASSWORD | WorkflowGen database user password | ✅ Yes |
MSSQL_PID | SQL Server edition (see edition table) | ⚠️ Recommended for v10 Linux |
Notes:
ACCEPT_EULAis required for Linux images only (Microsoft requirement). Windows images have SQL Server pre-installed.SA_PASSWORDis required for both Linux and Windows images.MSSQL_SA_PASSWORDis also supported as an alias forSA_PASSWORD.
| Variable | Description | Default |
|---|---|---|
WFGEN_DATABASE_NAME | WorkflowGen database name | WFGEN |
WFGEN_DATABASE_CONTAINMENT | Enable contained database users (Y or N) | Y |
WFGEN_DATABASE_USER_USERNAME | WorkflowGen database user username | WFGEN_USER |
WFGEN_DATABASE_FILE_PATH | Path to database files inside container | Windows: C:\wfgen\sqlLinux: /var/opt/mssql |
WFGEN_ADMIN_USERNAME | WorkflowGen admin username | wfgen_admin |
WFGEN_ADMIN_PASSWORD | WorkflowGen admin password | (none) |
WFGEN_AUTH_APPLICATION | Use WorkflowGen applicative auth (Y or N) | Y |
For v10 Linux only - Choose your SQL Server edition based on your use case:
| Edition | Value | Use Case | Cost | Production |
|---|---|---|---|---|
| Developer | Developer | Development & Testing | FREE | ❌ Not licensed |
| Express | Express | Production | FREE | ✅ Yes |
| Enterprise | Enterprise | Production | Requires license | ✅ Yes |
Important Notes:
MSSQL_PID is not specified, SQL Server defaults to Developer edition (Microsoft default)Express (free) or Enterprise (requires license)Developer is recommended (it's the default)Example for Linux v10:
# database.env for Linux
SA_PASSWORD=yourStrong(!)Password
WFGEN_DATABASE_USER_PASSWORD=myStrong(?)Password
ACCEPT_EULA=Y
# Free for production use
MSSQL_PID=Express
Use these connection strings in your WorkflowGen container (works on both Linux and Windows):
Recommended (WFGEN_USER account):
WFGEN_DATABASE_CONNECTION_STRING=Data Source=wfgen-sql;Initial Catalog=WFGEN;User ID=WFGEN_USER;Password=<your-password>;TrustServerCertificate=True
Using SA account (not recommended for production):
WFGEN_DATABASE_CONNECTION_STRING=Data Source=wfgen-sql;Initial Catalog=WFGEN;User ID=sa;Password=<SA-password>;TrustServerCertificate=True
Note:
TrustServerCertificate=Trueis required for SQL Server 2025 (both Linux and Windows) due to enforced SSL encryption with self-signed certificates.
To connect with SQL Server Management Studio, Azure Data Studio, or other tools:
localhost,1433 or 127.0.0.1,1433sa (or WFGEN_USER)WFGENProtect production credentials with Docker Secrets or Kubernetes Secrets.
# Create secrets
echo "yourStrong(!)Password" | docker secret create SA_PASSWORD -
echo "myStrong(?)Password" | docker secret create WFGEN_DATABASE_USER_PASSWORD -
# Create service with secrets
docker service create \
--name wfgen-sql \
--secret SA_PASSWORD \
--secret WFGEN_DATABASE_USER_PASSWORD \
-e SA_PASSWORD_FILE=/run/secrets/SA_PASSWORD \
-e WFGEN_DATABASE_USER_PASSWORD_FILE=/run/secrets/WFGEN_DATABASE_USER_PASSWORD \
-e ACCEPT_EULA=Y \
advantys/workflowgen-sql:9.7.0-ubuntu-22.04
# Create secrets
"yourStrong(!)Password" | docker secret create SA_PASSWORD -
"myStrong(?)Password" | docker secret create WFGEN_DATABASE_USER_PASSWORD -
# Create service with secrets
docker service create `
--name wfgen-sql `
--secret SA_PASSWORD `
--secret WFGEN_DATABASE_USER_PASSWORD `
-e SA_PASSWORD_FILE=C:\ProgramData\Docker\secrets\SA_PASSWORD `
-e WFGEN_DATABASE_USER_PASSWORD_FILE=C:\ProgramData\Docker\secrets\WFGEN_DATABASE_USER_PASSWORD `
-e ACCEPT_EULA=Y `
advantys/workflowgen-sql:9.7.0-express-win-ltsc2019
Important: Environment variables ending with
_FILEand their non-_FILEcounterparts are mutually exclusive. If both are defined, the container will fail to start.
Create database.env:
# Required
SA_PASSWORD=yourStrong(!)Password
WFGEN_DATABASE_USER_PASSWORD=myStrong(?)Password
# Required for Linux only
ACCEPT_EULA=Y
# Recommended for v10 Linux (specify SQL Server edition)
MSSQL_PID=Developer
# Optional
WFGEN_DATABASE_CONTAINMENT=Y
WFGEN_DATABASE_USER_USERNAME=WFGEN_USER
WFGEN_ADMIN_USERNAME=wfgen_admin
WFGEN_ADMIN_PASSWORD=admin123
WFGEN_AUTH_APPLICATION=Y
Then use it with --env-file:
# v10 Linux
docker run -d --env-file ./database.env advantys/workflowgen-sql:10.5.0-ubuntu-24.04
# v9 Linux
docker run -d --env-file ./database.env advantys/workflowgen-sql:9.7.0-ubuntu-22.04
# v8/v9 Windows
docker run -d --env-file .\database.env advantys/workflowgen-sql:9.7.0-express-win-ltsc2019
| Container Path | Description |
|---|---|
/var/opt/mssql | SQL Server data directory (includes all databases) |
Example:
# Using named volume (recommended)
docker volume create wfgen-sql-data
docker run -d -v wfgen-sql-data:/var/opt/mssql advantys/workflowgen-sql:10.5.0-ubuntu-24.04
# Using bind mount
docker run -d -v /host/path/to/mssql:/var/opt/mssql advantys/workflowgen-sql:9.7.0-ubuntu-22.04
| Container Path | Description |
|---|---|
C:\wfgen\sql | WorkflowGen database files (WFGEN.mdf and WFGEN_Log.ldf) |
Example:
# Using named volume (recommended)
docker volume create wfgen-sql-data
# v10 (SQL Server 2025)
docker run -d -v wfgen-sql-data:C:\wfgen\sql advantys/workflowgen-sql:10.5.0-express-win-ltsc2022
# v9 (SQL Server 2017/2022)
docker run -d -v wfgen-sql-data:C:\wfgen\sql advantys/workflowgen-sql:9.7.0-express-win-ltsc2019
# Using bind mount
docker run -d -v C:\host\path:C:\wfgen\sql advantys/workflowgen-sql:9.7.0-express-win-ltsc2019
⚠️ Important: Always map volumes to persist your data. Without volume mapping, all data will be lost when the container is removed.
# Interactive PowerShell session
docker exec -it wfgen-sql pwsh
# Execute single command
docker exec wfgen-sql pwsh -Command "Get-Date"
# Interactive PowerShell session
docker exec -it wfgen-sql powershell
# Execute single command
docker exec wfgen-sql powershell -Command "Get-Date"
# Interactive bash session
docker exec -it wfgen-sql bash
# Execute single command
docker exec wfgen-sql bash -c "ls -la /var/opt/mssql"
The Quick Start commands publish port 1433. See connection settings above.
Note: If SQL Server is already running on the host on port 1433, map to a different port:
docker run -d -p 1434:1433 ... advantys/workflowgen-sql:10.5.0-ubuntu-24.04Then connect to
localhost,1434
# Stop container (preserves data if volumes are mapped)
docker stop wfgen-sql
# Start existing container
docker start wfgen-sql
# Restart container
docker restart wfgen-sql
# Remove container (data persists in volumes)
docker rm wfgen-sql
# View container logs
docker logs wfgen-sql
# Follow logs in real-time
docker logs -f wfgen-sql
# View last 100 lines
docker logs --tail 100 wfgen-sql
# Check container status
docker ps --filter name=wfgen-sql
Open a container SQL session from your host:
# Linux container
docker exec -it wfgen-sql pwsh -NoLogo -NoProfile
# Windows container
docker exec -it wfgen-sql powershell -NoLogo -NoProfile
Set up inside the session: Linux uses startup password aliases/_FILE secrets;
Windows uses container-account Express access. Trust is local to these diagnostics.
$sqlParams = @{ ServerInstance = 'localhost'; TrustServerCertificate = $true }
if ($PSVersionTable.PSVersion.Major -le 5 -or $IsWindows) {
$sqlParams.ServerInstance = '.\SQLEXPRESS'
} else {
Import-Module /usr/local/lib/Utils.psm1 -Function Get-EnvVar -Prefix WFG
$sqlParams.Username = 'sa'
$sqlParams.Password = Get-WFGEnvVar 'MSSQL_SA_PASSWORD' -TryFile -DefaultValue (Get-WFGEnvVar 'SA_PASSWORD' -TryFile)
if (-not $sqlParams.Password) { throw 'Set the SQL password or its _FILE secret first.' }
}
# Verify database is accessible
Invoke-Sqlcmd -Query 'SELECT DB_NAME()' -Database WFGEN @sqlParams
# Verify WorkflowGen tables exist (should return 64 tables)
Invoke-Sqlcmd -Query "SELECT COUNT(*) AS TableCount FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo'" -Database WFGEN @sqlParams
# Check admin user
Invoke-Sqlcmd -Query 'SELECT TOP 1 USERNAME FROM USERS WHERE ID_USER = 1' -Database WFGEN @sqlParams
Run docker on the host after exit. Repeat setup in each new session.
In the container SQL session, generate a unique backup filename. Windows uses an unmounted directory for host copies:
$backupDirectory = if ($PSVersionTable.PSVersion.Major -le 5 -or $IsWindows) { 'C:\wfgen\backup' } else { '/var/opt/mssql/backup' }
New-Item -ItemType Directory -Path $backupDirectory -Force | Out-Null
$backupName = 'WFGEN_' + [guid]::NewGuid().ToString('N') + '.bak'
$backupPath = Join-Path $backupDirectory $backupName
$backupQuery = "BACKUP DATABASE [WFGEN] TO DISK = N'$backupPath'"
if ($backupDirectory -eq '/var/opt/mssql/backup') {
$backupQuery += " WITH NOFORMAT, NOINIT, NAME = 'WFGEN-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
}
Invoke-Sqlcmd -Query $backupQuery @sqlParams
$backupName
exit
On the host, set backupName to the complete filename printed above:
Windows copies require maintenance downtime: stop applications and automatic container restarts/replacements first. Stop the database container around each copy for Hyper-V compatibility; restart it only if the copy succeeds.
# Linux container
backupName='WFGEN_<id>.bak'
docker cp "wfgen-sql:/var/opt/mssql/backup/$backupName" "./$backupName"
# Windows container
$backupName = 'WFGEN_<id>.bak'
docker stop wfgen-sql
if ($LASTEXITCODE -ne 0) { throw 'Container stop failed.' }
docker cp "wfgen-sql:C:\wfgen\backup\$backupName" ".\$backupName"
if ($LASTEXITCODE -ne 0) { throw 'Copy failed; keep the container stopped.' }
docker start wfgen-sql
if ($LASTEXITCODE -ne 0) { throw 'Container start failed.' }
After verifying the host copy and database/container readiness, resume applications and restart policies. Keep the host backup; delete its container copy if unneeded:
# Linux host
docker exec wfgen-sql rm -- "/var/opt/mssql/backup/$backupName"
# Windows host
docker exec wfgen-sql powershell -NoProfile -Command "Remove-Item -LiteralPath 'C:\wfgen\backup\$backupName'"
Stop applications and automatic restarts/replacements for maintenance. On the
host, set backupName to the selected filename, then copy:
# Linux container: prepare the directory, then copy from your host
docker exec wfgen-sql pwsh -NoLogo -NoProfile -Command "New-Item -ItemType Directory -Path /var/opt/mssql/backup -Force | Out-Null"
docker cp "./$backupName" "wfgen-sql:/var/opt/mssql/backup/$backupName"
docker exec -u 0 wfgen-sql chown mssql "/var/opt/mssql/backup/$backupName"
docker exec -u 0 wfgen-sql chmod u+r "/var/opt/mssql/backup/$backupName"
# Windows container: prepare the directory, then copy
docker exec wfgen-sql powershell -NoProfile -Command "New-Item -ItemType Directory C:\wfgen\backup -Force | Out-Null"
if ($LASTEXITCODE -ne 0) { throw 'Backup directory creation failed.' }
docker stop wfgen-sql
if ($LASTEXITCODE -ne 0) { throw 'Container stop failed.' }
docker cp ".\$backupName" "wfgen-sql:C:\wfgen\backup\$backupName"
if ($LASTEXITCODE -ne 0) { throw 'Copy failed; keep the container stopped.' }
docker start wfgen-sql
if ($LASTEXITCODE -ne 0) { throw 'Container start failed.' }
Wait for database/container readiness; keep applications and automatic restarts stopped. Repeat setup in a new container SQL session, then run the block. Health checks fail while WFGEN is offline; errors stop later commands.
$backupName = 'WFGEN_<id>.bak' # Use the same complete filename.
$backupDirectory = if ($PSVersionTable.PSVersion.Major -le 5 -or $IsWindows) { 'C:\wfgen\backup' } else { '/var/opt/mssql/backup' }
$backupPath = Join-Path $backupDirectory $backupName
& {
Invoke-Sqlcmd -Database master -Query 'ALTER DATABASE [WFGEN] SET OFFLINE WITH ROLLBACK IMMEDIATE' -ErrorAction Stop @sqlParams
Invoke-Sqlcmd -Database master -Query "RESTORE DATABASE [WFGEN] FROM DISK = N'$backupPath' WITH FILE = 1, RECOVERY, NOUNLOAD, REPLACE, STATS = 5" -ErrorAction Stop @sqlParams
Invoke-Sqlcmd -Database master -Query 'ALTER DATABASE [WFGEN] SET MULTI_USER WITH ROLLBACK IMMEDIATE' -ErrorAction Stop @sqlParams
}
exit
On failure, keep applications stopped and diagnose/retry; do not blindly bring the database online. After success, verify WFGEN and container health before resuming applications/restart policies. Keep the host backup; delete the restored container copy using the cleanup commands above when no longer needed.
{version}-ubuntu-{ubuntu_version}
ubuntu-24.04 (e.g., 10.5.0-ubuntu-24.04)ubuntu-22.04 (e.g., 9.7.0-ubuntu-22.04)ubuntu-18.04 (e.g., 9.2.11-ubuntu-18.04, 8.3.5-ubuntu-18.04){version}-express-win-ltsc2019 or {version}-express-win-ltsc2022 where available
10.5.0-express-win-ltsc2022 or 10.5.0-express-win-ltsc2019)9.7.0-express-win-ltsc2019, 9.7.0-express-win-ltsc2022, 8.3.5-express-win-ltsc2019)Current v10 and v9 examples are in the version compatibility matrix.
Earlier examples follow the tag conventions above: versions 9.2.11, 9.1.1,
9.0.7, 8.3.5, 8.2.4, 8.1.3 and 8.0.12 use Linux ubuntu-18.04 or
Windows express-win-ltsc2019.
Default Tag:
latest follows the latest published v10 Linux image (SQL Server 2025).Recommendation: Always use specific version tags (e.g.,
10.5.0-ubuntu-24.04,9.7.0-ubuntu-22.04) for reproducibility.
SQL Server 2025 provides native vector data and configured Full-Text Search for v10.
| Platform | Edition | Licensing | Notes |
|---|---|---|---|
| Linux | Developer (default) | FREE for dev/test | Configurable via MSSQL_PID env var |
| Linux | Express | FREE for production | Set MSSQL_PID=Express |
| Linux | Enterprise | Requires license | Set MSSQL_PID=Enterprise |
| Windows | Express | FREE | Fixed in image, cannot be changed |
Note:
- Linux images are production-ready with SQL Server 2025. Use
MSSQL_PID=Express(free) orMSSQL_PID=Enterprise(requires license) for production.- Windows images use Express Edition (50GB database, the lesser of 1 socket or 4 cores, 1.4GB RAM) for development/testing only.
- PostgreSQL is also supported for v10 production.
Managed databases such as Azure SQL Database or Amazon RDS are also production options.
SQL Server enforces password complexity requirements:
Example strong passwords:
yourStrong(!)PasswordMyP@ssw0rd2024Secure#Pass123Check logs:
docker logs wfgen-sql
Common causes:
ACCEPT_EULA not set to YSA_PASSWORD doesn't meet complexity requirementsVerify container is running:
docker ps --filter name=wfgen-sql
Check if port is exposed:
docker port wfgen-sql
Test inside the configured container SQL session:
Invoke-Sqlcmd -Query 'SELECT @@VERSION' @sqlParams
Common issues:
TrustServerCertificate=True missing from connection stringWait for initialization message:
docker logs -f wfgen-sql
Look for: Workflowgen database is ready.
Initialization typically takes 30-90 seconds on first start depending on system performance.
Verify inside the configured container SQL session:
# Should return 64 tables
Invoke-Sqlcmd -Query "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo'" -Database WFGEN @sqlParams
The Windows image uses SQL Server Express 2017 which has limitations:
Solution: Migrate to the Linux image for better performance and no limitations.
By using this image, you agree to the:
For SQL Server licensing information, visit Microsoft SQL Server Licensing.
Content type
Image
Digest
sha256:f3e912953…
Size
1.7 GB
Last updated
7 days ago
docker pull advantys/workflowgen-sql