PactFlow On-Premises Architecture
System architecture
Minimum requirements
An application server capable of running Docker.
PostgreSQL database.
Redis Serialization Protocol (RESP)-compatible key/value cache.
SAML IDP for SSO.
PactFlow On-Premises license file.
Recommended architecture
Deploy to a service designed for Docker container orchestration (for example, ECS, Fargate or Kubernetes).
Example AWS deployment using ECS

Internal architecture
We distribute the PactFlow On-Premises application as a Docker image. It uses the open-source Pact Broker, which is a Ruby application.
Application user requirements
You can run the application without elevated privileges. It runs under the user app
.
Application port
The PactFlow On-Premises application runs on port 9292
by default. You can configure it by setting the PACTFLOW_HTTP_PORT environment variable.
Healthcheck endpoint
There is a healthcheck endpoint at http:///diagnostic/status/heartbeat meant for Docker container management tools.
It doesn't need authentication.
It doesn't touch the database.
You can use it to check if the load balancer targets are working properly.
If you're running the healthcheck from inside the container, ensure to use the port specified by the $PACTFLOW_HTTP_PORT
environment variable (defaults to 9292
if not set).
You can use supervisorctl
to send the healthcheck request.
Example
An example healthcheck configuration for Docker Compose:
healthcheck: test: ["supervisorctl", "status", "haproxy", "marko", "pactflow"] interval: 30s timeout: 10s retries: 3
To check the connection to the database, use the endpoint /diagnostic/status/dependencies
. This endpoint shouldn't be used by Docker container managment services, as unrelated database issues might cause the Docker container to churn.
License file
PactFlow On-Premises requires a license file to run. Contact us if you didn't receive one when your account was set up. Visit the License file section for installation instructions.