Deploy SupportPal using Docker (Microservices)

SupportPal provides a docker image intended for use in a microservice style architecture, whereby each service is deployed to a separate container.

This guide is tailored towards experienced DevOps engineers and provides a broad overview of how to use the image. The user is expected to separately configure several components such as a webserver, a MySQL database, and more. Gaps are intentionally left in this document, and the user is expected to fill them based on their individual requirements.

Contents

Repository

SupportPal provides a universal image which is preconfigured with all dependencies, optimised software settings and security hardened.

It is available from AWS ECR with tags matching an application version which is greater than 5.0.0. For example: public.ecr.aws/supportpal/helpdesk:5.0.0


Architecture

There are few expectations and dependencies on 3rd party services that the helpdesk software relies on to operate normally - all are available for free.

Persistence and storage

A typical docker container is ephemeral, and should be treated as such. However, SupportPal containers need several directories to persist indefinitely so the data is not lost. The following directories in the image are expected to be persisted. The same data should be shared and synchronised for all containers using the SupportPal image.

Containers

The software expects the following containers:

The following containers are optional, but highly recommended in a production environment:

Mail Transport Agent (MTA)

The Docker image does not include a mail transport agent (MTA), as such the built-in PHP mail() option will not work without additional configuration. For simplicity, we recommend to make use of the built-in SMTP option as this does not require additional Docker configuration.

A Functional Example

A functional example of a deployment built using this images, using docker-compose can be found at: github://supportpal/helpdesk-install .


Installing the Helpdesk

Start by having one container online (php-fpm), and run the following command:


docker exec -it supportpal bash /scripts/init-helpdesk.sh

High Availability Usage

For setups with high-load, it may be necessary to scale your infrastructure to having multiple containers of each task running. For example, if the helpdesk is having an influx of HTTP requests the number of php-fpm containers could be scaled up.

Storage Considerations

As mentioned previously, there are a few directories which must be kept synchronised across containers.

SupportPal Marketplace (/supportpal/addons)

This directory is special because it contains code that loads on every request. In a HA deployment we recommend:

/supportpal/storage

We recommend to make use of an S3 compatible service for storing files in the storage/ directory. See configuring cloud storage for guidance.

Other directories

For all other directories, we recommend using a high-bandwidth, low latency, share storage service.