Nginx 1.17

Varnish 6.0

HAProxy latest

WordPress latest, PHP-FPM 7.3

phpMyAdmin latest

Redis 5.0

MariaDB 10.4 MasterSlave


The stack is suitable for highload wordpress sites which you can can scale as you want. It provides a one-click install solution for scalable WordPress with smart Varnish caching. The whole deployment takes about 10-15 minutes.

How the wordpress stack works

Nginx on front-end takes requests from users and proxying them to Varnish. Then Varnish checks cache: if it has a cached page for the response it sends the page back if has not, Varnish proxying the request to load balancer Haproxy, which distributes the load between several nodes.

As a base is used MariaDB in master/slave configuration with Redis as object cache. 

Scalable WordPress with Varnish

The Scalable WordPress stack design

How to deploy the stack
  1. Click Deploy stack
  2. Sign in or create an account
  3. Choose a provider (how to add a cloud provider) and a region or an existing host (how to add own host to D2C) in Select existing hosts menu
  4. Fill in necessary fields (if they are, e.g. link to your repository)
  5. Click Create hosts and services
Minimal recommended configuration
  • 2 hosts with 2GB RAM
  • 1 host with 1GB RAM
Configuring custom domain and getting free TLS certificates

You can add your domains with free Let’s Encrypt certificates using the following instruction:

  • Open an NGINX service 
  • click “Edit settings”
  • find “Configure services” block
  • click Generate new config, choose HTTPS, Proxy mode and click Generate
  • choose Own domains and specify domains and/or subdomains at domains field
  • click Update service
Checking logs of containers (php, nginx, etc.)

You can check live logs at the page of a container. You may find information about D2C logs in the documentation.

Changes in your config files

You can find and edit your configs using the following instruction:

  • open a Docker service (name “blog” by default in the stack)
  • click “Edit
  • find “Configs” block
How to scale

To scale a database:

  1. Open a MariaDB service (name “db” in the stack by default)
  2. Click Scale 
  3. Choose hosts for slaves
  4. Click Scale service

To scale a WordPress service, you need to scale PHP-FPM service (name “blog” by default in the stack) and NGINX-Cluster (name “cluster” by default) and follow the next steps:

  1. Open a PHP-FPM service
  2. Click Scale
  3. Choose hosts you want to use for new PHP-FPM containers
  4. Click Scale service
  5. Do the same with NGINX-Cluster using the same hosts (each PHP-FPM service should be with NGINX-cluster at the same host(s))
There is nothing else needs to do. Load balancer works in Sticky session mode by default and balances PHP-FPM containers. HyperDB plugin is already configured and works well with MasterSlave configuration.
After deploying

You can: