Sign inSign up

advantys/workflowgen-postgres

By advantys

•Updated 8 days ago

WorkflowGen PostgreSQL database with pgvector. Linux and Windows images for v10+.

Image
0

3.0K

advantys/workflowgen-postgres repository overview

⁠WorkflowGen PostgreSQL Database with pgvector

PostgreSQL 17 and 18 database images for WorkflowGen 10.5.0, with pgvector for AI and semantic search.

Select an explicit WorkflowGen version, PostgreSQL major and operating-system tag. The examples below use WorkflowGen 10.5.0 and persistent named volumes.

The 10.5.0 image definitions select PostgreSQL 17.11 or 18.6, with pgvector 0.8.7 on Linux and 0.8.6 on Windows.

⁠✅ Production-Ready

PostgreSQL 17 and 18 images support Linux (Debian Bookworm) and Windows Server 2022 LTSC. Windows Server 2019 LTSC uses PostgreSQL 17; there is no PostgreSQL 18 LTSC2019 image.

This is currently the recommended production database for WorkflowGen v10 deployments.

⁠Key Features

  • PostgreSQL - Choose PostgreSQL 17 or 18 with a major-specific image tag
  • pgvector - Native vector embeddings for AI/semantic search
  • SCRAM-SHA-256 - Enhanced security authentication
  • Supply chain integrity - SHA256 checksum verification of Windows binaries
  • Health monitoring - Built-in health checks with pg_isready
  • Secure by default - Runs as a non-root Linux user or a non-administrator Windows account
  • Pre-configured - WorkflowGen schema with 64 tables initialized automatically

⁠Quick Start

⁠Linux PostgreSQL 17 (Debian Bookworm)

Create a database.env file:

PGDATA=/var/lib/postgresql/data
POSTGRES_PASSWORD=yourStrong(!)Password
WFGEN_DATABASE_USER_PASSWORD=myDbPassword
WFGEN_ADMIN_PASSWORD=adminPassword

Run the container:

docker container run -d \
    --env-file ./database.env \
    --mount "type=volume,src=pgdata,dst=/var/lib/postgresql/data" \
    --name wfgen-postgres \
    -p 5432:5432 \
    advantys/workflowgen-postgres:10.5.0-postgres17-debian-bookworm
⁠Linux PostgreSQL 18 (Debian Bookworm)

Create a separate database18.env file with your own passwords:

PGDATA=/var/lib/postgresql/18/docker
POSTGRES_PASSWORD=yourStrong(!)Password
WFGEN_DATABASE_USER_PASSWORD=myDbPassword
WFGEN_ADMIN_PASSWORD=adminPassword

Use a new volume for this new installation:

docker container run -d \
    --env-file ./database18.env \
    --mount "type=volume,src=pgdata18,dst=/var/lib/postgresql" \
    --name wfgen-postgres18 \
    -p 5432:5432 \
    advantys/workflowgen-postgres:10.5.0-postgres18-debian-bookworm

The two Linux examples both publish host port 5432. To run them together, change one host port, for example -p 5433:5432. Do not attach a PostgreSQL 17 data volume to PostgreSQL 18; changing the image does not convert its data.

⁠Windows (Server 2022 or Server 2019 LTSC)

Create a database.env file:

PGDATA=C:\pgsql\data
POSTGRES_INITDB_ARGS=--username=postgres
POSTGRES_PASSWORD=yourStrong(!)Password
WFGEN_DATABASE_USER_PASSWORD=myDbPassword
WFGEN_ADMIN_PASSWORD=adminPassword

Run the container:

docker container run -d `
    --env-file .\database.env `
    --mount "type=volume,src=pgdata,dst=C:\pgsql\data" `
    --name wfgen-postgres `
    -p 5432:5432 `
    advantys/workflowgen-postgres:10.5.0-postgres17-win-ltsc2022

For PostgreSQL 18 on Windows Server 2022 LTSC, use the same environment-file format with a new volume. The Windows data-directory path is unchanged:

docker container run -d `
    --env-file .\database.env `
    --mount "type=volume,src=pgdata18,dst=C:\pgsql\data" `
    --name wfgen-postgres18 `
    -p 5432:5432 `
    advantys/workflowgen-postgres:10.5.0-postgres18-win-ltsc2022

These Windows examples both publish host port 5432. If running them together, change one host port, for example -p 5433:5432.

For Windows Server 2019, use advantys/workflowgen-postgres:10.5.0-postgres17-win-ltsc2019.

⁠Wait for Initialization
docker logs -f wfgen-postgres
# Look for: "Workflowgen database is ready"

After that message, press Ctrl+C to stop following logs; the container keeps running. The message confirms initialization is complete, but PostgreSQL may still be starting. Run a fresh TCP readiness check:

# Linux
docker exec wfgen-postgres pg_isready -h 127.0.0.1 -U postgres -d wfgen -t 2
# Windows
docker exec wfgen-postgres C:\pgsql\bin\pg_isready.exe -h 127.0.0.1 -U postgres -d wfgen -t 2

Continue only when it reports accepting connections with exit code 0. If needed, repeat every two seconds for up to two minutes, then inspect the logs if it still fails. Docker's health status alone is insufficient: it can temporarily retain a successful check from initialization.

For the Linux PostgreSQL 18 example, use the container name wfgen-postgres18 in monitoring and troubleshooting commands.

⁠Requirements

⁠Linux
  • Docker Engine on any Linux distribution
  • Minimum 2GB RAM (4GB+ recommended for production)
  • Docker for Windows (with Linux containers mode) or Docker for Mac
  • A WorkflowGen application matching the database image release; PostgreSQL 18 requires WorkflowGen 10.5.0 or later
⁠Windows
  • On Windows 10 Pro or Enterprise, install Hyper-V and Docker Desktop, switch to Windows containers, and use an ltsc2019 image. Windows 10 does not support Windows Server 2022 container images.
  • Use Windows 11 or Windows Server 2022 or later for ltsc2022 images. Consult Microsoft's Windows container version compatibility⁠ matrix when the host and container versions differ.
  • On Windows Server, use the image tag matching the host version for process isolation. A newer compatible host can run an older image with Hyper-V isolation.
  • A WorkflowGen application matching the database image release; PostgreSQL 18 requires WorkflowGen 10.5.0 or later

⁠Environment Variables

⁠Required
VariableDescription
POSTGRES_PASSWORDPostgreSQL superuser password
WFGEN_DATABASE_USER_PASSWORDWorkflowGen database user password
WFGEN_ADMIN_PASSWORDWorkflowGen administrator password

Linux PostgreSQL 17:

PGDATA=/var/lib/postgresql/data

Linux PostgreSQL 18:

PGDATA=/var/lib/postgresql/18/docker

The image supplies its major-specific PGDATA default. For PostgreSQL 18, mount /var/lib/postgresql; do not copy the PostgreSQL 17 mount example. On Linux, leave POSTGRES_INITDB_ARGS unset to inherit --encoding=UTF8 --locale=C.UTF-8. Setting it in an environment file replaces the entire value; it does not append arguments to the image defaults.

Windows:

PGDATA=C:\pgsql\data
POSTGRES_INITDB_ARGS=--username=postgres
⁠Optional
VariableDefaultDescription
WFGEN_DATABASE_NAMEWFGENDatabase name (becomes wfgen in lowercase)
WFGEN_DATABASE_USER_USERNAMEwfgen_userDatabase user name
WFGEN_ADMIN_USERNAMEwfgen_adminWorkflowGen admin username
WFGEN_AUTH_APPLICATIONYEnable applicative authentication
PGDATAImage default for the selected platform/majorPostgreSQL data directory; use the matching persistent-volume mount
POSTGRES_INITDB_ARGSImage/initdb defaultsOptional initialization arguments for a new data directory

Note: All environment variables support the _FILE suffix for Docker Secrets integration.

⁠Volumes

⁠Linux PostgreSQL 17

Mount /var/lib/postgresql/data to persist your PostgreSQL database:

# Named volume (recommended)
--mount "type=volume,src=pgdata,dst=/var/lib/postgresql/data"

# Or bind mount (if you need direct host access)
--mount "type=bind,src=/path/to/data,dst=/var/lib/postgresql/data"
⁠Linux PostgreSQL 18

Mount /var/lib/postgresql while keeping the image's PGDATA=/var/lib/postgresql/18/docker default:

# New, separate volume for a new PostgreSQL 18 installation
--mount "type=volume,src=pgdata18,dst=/var/lib/postgresql"

Do not reuse data directories across PostgreSQL majors. Changing the tag or mount path does not convert database files.

⁠Windows

Mount C:\pgsql\data to persist your PostgreSQL database:

# Named volume (recommended)
--mount "type=volume,src=pgdata,dst=C:\pgsql\data"

# Or bind mount (if you need direct host access)
--mount "type=bind,src=C:\path\to\data,dst=C:\pgsql\data"
⁠Initial creation and reuse
  • New named volume: the image initializes PostgreSQL, then creates the WorkflowGen database, schema and initial data in that volume.
  • Existing compatible volume: the image uses the existing database and does not replay creation scripts. Stopping or replacing the container preserves the volume; removing the volume deletes its data.
  • No explicit volume mount: use only for disposable tests. Docker can create an anonymous volume from the image's declared volume. Record and manage that volume explicitly if you need to keep or remove its data.

For an image update within the same PostgreSQL major, back up the database, stop the old container cleanly, and create its replacement with the same volume and configuration. Do not run two PostgreSQL servers against the same data volume. Schema and PostgreSQL-major upgrades require their own upgrade procedure.

⁠Ports

  • 5432 - PostgreSQL server port

⁠Connection String

For WorkflowGen application configuration:

Host=wfgen-postgres;Port=5432;Database=wfgen;Username=wfgen_user;Password=<password>

Note: Use Host= for PostgreSQL/Npgsql connections (not Server=).

⁠Health Check

The container includes built-in health monitoring:

docker inspect --format='{{.State.Health.Status}}' wfgen-postgres

healthy records a successful recent connection-readiness check; it is not proof that initialization has completed or that PostgreSQL is accepting connections now. Follow the initialization message with the fresh TCP check above, then verify the WorkflowGen schema and application connection separately.

⁠pgvector Extension

The pgvector extension is pre-installed and automatically enabled in the WorkflowGen database during initialization.

For an existing database, replacing the container does not automatically upgrade its registered vector extension. Check the installed extension version and follow the pgvector upgrade instructions⁠ after backing up and validating the new image with the existing data volume.

Verify pgvector is available:

Linux:

docker exec wfgen-postgres psql -U postgres -d wfgen -c "SELECT * FROM pg_extension WHERE extname = 'vector';"

Windows:

docker exec wfgen-postgres C:\pgsql\bin\psql.exe -U postgres -d wfgen -c "SELECT * FROM pg_extension WHERE extname = 'vector';"

This extension enables WorkflowGen v10+ AI features including:

  • Semantic search capabilities
  • Vector embeddings storage
  • Similarity search operations

⁠Supported Tags

Use a versioned tag for reproducible deployments. The leading version is WorkflowGen's release version; the database major and platform are part of the tag.

⁠WorkflowGen 10.5.0 version tags

Choose the PostgreSQL major and platform explicitly:

Version tagPostgreSQL majorPlatform
10.5.0-postgres17-debian-bookworm17Linux Debian Bookworm
10.5.0-postgres18-debian-bookworm18Linux Debian Bookworm
10.5.0-postgres17-win-ltsc201917Windows Server 2019 LTSC
10.5.0-postgres17-win-ltsc202217Windows Server 2022 LTSC
10.5.0-postgres18-win-ltsc202218Windows Server 2022 LTSC

The leading version identifies WorkflowGen; postgres17 or postgres18 identifies the database major. Existing 10.4.0 versioned images are retained. Legacy 10.5.0 tags without a database major remain PostgreSQL 17 aliases: 10.5.0-postgres-debian-bookworm, 10.5.0-postgres-win-ltsc2019 and 10.5.0-postgres-win-ltsc2022.

⁠Moving aliases

Major-specific aliases follow updates within the selected PostgreSQL major:

PlatformPostgreSQL 17PostgreSQL 18
Linuxlatest-postgres17-linuxlatest-postgres18-linux
Windows Server 2022 LTSClatest-postgres17-win-ltsc2022latest-postgres18-win-ltsc2022
Windows Server 2019 LTSClatest-postgres17-win-ltsc2019Not available

For WorkflowGen 10.5.0, latest-linux and latest-win-ltsc2022 select PostgreSQL 17. latest-win-ltsc2019 and its compatibility alias postgres-latest also select PostgreSQL 17. Prefer an explicit major-specific tag when automating updates, so your deployment does not depend on the PostgreSQL major selected by a generic alias in a future release.

Publishing images does not update running containers. Clients using a moving major-specific alias can automate updates within that PostgreSQL major by pulling and recreating the container. Changing the PostgreSQL major requires an explicit migration; pull/recreate does not perform it, and the 18 image refuses an existing PostgreSQL 17 cluster. Pin a versioned major/platform tag to control adoption. The repository does not publish a plain latest tag.

⁠Platform Support

PlatformStatusNotes
Linux (Debian Bookworm)PostgreSQL 17 and 18Separate major-specific tags
Windows Server 2022 LTSCPostgreSQL 17 and 18Separate major-specific tags
Windows Server 2019 LTSCPostgreSQL 17 onlyNo PostgreSQL 18 variant

⁠Secrets Management

For production deployments, use Docker Secrets or Kubernetes Secrets by appending _FILE to environment variable names:

⁠Docker Secrets Example (Linux)
# Create secrets
echo "yourStrong(!)Password" | docker secret create postgres_password -
echo "myDbPassword" | docker secret create wfgen_db_password -
echo "adminPassword" | docker secret create wfgen_admin_password -

# Create service with secrets
docker service create \
    --name wfgen-postgres \
    --secret postgres_password \
    --secret wfgen_db_password \
    --secret wfgen_admin_password \
    -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres_password \
    -e WFGEN_DATABASE_USER_PASSWORD_FILE=/run/secrets/wfgen_db_password \
    -e WFGEN_ADMIN_PASSWORD_FILE=/run/secrets/wfgen_admin_password \
    advantys/workflowgen-postgres:10.5.0-postgres17-debian-bookworm
⁠Docker Secrets Example (Windows)
# Create secrets
"yourStrong(!)Password" | docker secret create postgres_password -
"myDbPassword" | docker secret create wfgen_db_password -
"adminPassword" | docker secret create wfgen_admin_password -

# Create service with secrets
docker service create `
    --name wfgen-postgres `
    --secret postgres_password `
    --secret wfgen_db_password `
    --secret wfgen_admin_password `
    -e POSTGRES_PASSWORD_FILE=C:\ProgramData\Docker\secrets\postgres_password `
    -e WFGEN_DATABASE_USER_PASSWORD_FILE=C:\ProgramData\Docker\secrets\wfgen_db_password `
    -e WFGEN_ADMIN_PASSWORD_FILE=C:\ProgramData\Docker\secrets\wfgen_admin_password `
    advantys/workflowgen-postgres:10.5.0-postgres17-win-ltsc2022

⁠Why Choose PostgreSQL for WorkflowGen v10?

⁠Open Source & Cost-Effective
  • No per-core licensing or CAL costs
  • Community-driven innovation
  • Lower total cost of ownership
⁠Modern Features
  • pgvector for AI and semantic search
  • Advanced JSON/JSONB support
  • Robust full-text search
  • Mature replication and high availability
⁠Production-Ready Now
  • PostgreSQL 17 is stable and battle-tested
  • 25+ years of proven reliability
  • ACID compliance
  • Enterprise-grade performance
⁠Optimized for WorkflowGen
  • Pre-configured schema with all required tables
  • Tuned for workflow and BPM workloads
  • Comprehensive monitoring and health checks
  • Secure by default with best practices

⁠Troubleshooting

⁠View Logs
docker logs wfgen-postgres
⁠Access PostgreSQL Shell

Linux:

docker exec -it wfgen-postgres psql -U postgres -d wfgen

Windows:

docker exec -it wfgen-postgres C:\pgsql\bin\psql.exe -U postgres -d wfgen
⁠Check Database Initialization

Run these after the initialization message and a successful fresh TCP readiness check described above.

Linux:

# Verify tables were created
docker exec wfgen-postgres psql -U postgres -d wfgen -c "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';"
# Should return: 64

Windows:

docker exec wfgen-postgres C:\pgsql\bin\psql.exe -U postgres -d wfgen -c "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';"
⁠Verify Admin User

Linux:

docker exec wfgen-postgres psql -U postgres -d wfgen -c "SELECT USERNAME FROM USERS WHERE ID_USER = 1;"

Windows:

docker exec wfgen-postgres C:\pgsql\bin\psql.exe -U postgres -d wfgen -c "SELECT USERNAME FROM USERS WHERE ID_USER = 1;"

⁠Documentation

⁠Support

For technical support and questions:

⁠License

This image includes:

  • PostgreSQL (PostgreSQL License)
  • pgvector (PostgreSQL License)
  • WorkflowGen schema and configuration (Advantys)

See the WorkflowGen EULA for terms of use.

Tag summary

Content type

Image

Digest

sha256:af0ad9fa1…

Size

2.4 GB

Last updated

8 days ago

docker pull advantys/workflowgen-postgres:latest-postgres18-win-ltsc2022