Combining an OLS host with multiple docker containers

#1
I'm pretty new to both OLS and averagely experienced with Docker.

So I'm trying to set up a server on AlmaLinux 9 where OLS runs on the VPS level. I then want to use the vhost-map to send all the traffic (depending on domain) to one of many docker containers. However, I must have spent 6 hours just banging my head against a wall trying to get it to work.

I researched before starting and came to the conclusion that having the docker containers run as images of php:8.4-fpm which exposed port 9000 as FastCGI processes was the best idea. Is this a correct decision?

If so, I can't for the life of me get it working. This is the first vhost config:

Code:
docRoot                   /home/testing/public/
vhDomain                  testing.mydomain.dev

index  {
  useServer               0
  autoIndex               0
}

extprocessor php84 {
  type                    fcgi
  address                 127.0.0.1:9000
  maxConns                10
  initTimeout             60
  retryTimeout            0
  respBuffer              0
  autoStart               2
}

context / {
  type                    fcgi
  handler                 php84
  addDefaultCharset       off
}

vhssl  {
  keyFile                 /etc/letsencrypt/live/testing.mydomain.dev/privkey.pem
  certFile                /etc/letsencrypt/live/testing.mydomain.dev/fullchain.pem
  certChain               1
}
But all I ever get in 503 errors. And this in the log:

2025-09-16 00:07:12.790186 [INFO] [14609] [155.55.55.55:49364:HTTP2-3] Context [/] is not accessible: access denied.

and Docker is running on Port 9000:

# ss -ltnp | grep 9000
LISTEN 0 4096 0.0.0.0:9000 0.0.0.0:* users:(("docker-proxy",pid=15093,fd=7))
LISTEN 0 4096 [::]:9000 [::]:* users:(("docker-proxy",pid=15098,fd=7))

For good measure, here's my testing docker-compose.yml file:

YAML:
services:
  php:
    image: php:8.4-fpm
    container_name: myapp-php
    working_dir: /var/www/html
    restart: unless-stopped
    volumes:
      - ./public:/var/www/html
    networks:
      - testingnet
    ports:
      - 9000:9000

  db:
    image: mariadb:11
    container_name: myapp-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: supersecret
      MYSQL_DATABASE: myapp
      MYSQL_USER: myappuser
      MYSQL_PASSWORD: myapppass
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - testingnet

volumes:
  dbdata:

networks:
  testingnet:
    driver: bridge
Does anyone have any ideas? I'm on the verge of giving up here.
 
Top