Question

How to run single nginx and multiple Laravel instances in the App Platform

We use Docker Compose for our Laravel application development. The two main Docker containers in our Compose configuration are:

  • custom nginx Docker container with nginx micro-caching and request throttling - we would like to run a single instance of it

  • custom PHP Docker Container for Laravel itself; we would like to scale it horizontally; nginx is to round-robin requests to multiple Laravel containers (or connect to a single connection point managed by DigitalOcean App Platform).

We are considering App Platform for deployment.

Is this setup possible with the App Platform?

We cannot eliminate nginx because of its role in micro-caching and request throttling; we would like Laravel not to do it because nginx is much more efficient and less resource greedy at these tasks.

Subscribe
Share

Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

@ReWild 👋

This setup is possible on the App Platform! You’re describing 2 service components; 1 for the nginx service, and another for the laravel service — where each service can be scaled independently.

Your nginx configuration can reference your laravel service on the application internal network using a hostname matching your component name. So if your component name is laravel, then you can reference http://laravel from your nginx config in order to route to it internally as desired.

It’s worth noting that the App Platform does have an ingress gateway built-in (via Istio) that load-balances incoming traffic across all instances of your services, so it may not be necessary to do this yourself unless you want more control over other features that aren’t supported yet (like request throttling that you mentioned).