How to create a docker-based LAMP stack using docker-compose on Ubuntu 18.04 Bionic Beaver Linux -


In this tutorial, we will see how to create a LAMP stack based on dockerized components: following the "one service per container" philosophy, we will assemble the environment using docker-compose, a tool to orchestrate container compositions.

This is a companion discussion topic for the original entry at




I followed the instructions and modified your files for my own use. However, I am getting an error that pdo is not installed when I go to use a database connection. My docker-compose file is posted here as well as my Dockerfile: and



Dehan Louw

Great write-up, thanks! I just keep getting the error:
Uncaught Error: Class ‘mysqli’ not found in /var/www/html/events.php:6

Any idea? Everything is exactly like you said


Egidio Docile -> Dehan Louw

You are using mysqli extension. This is not included in the default php dockerfile: to include it, it’s necessary to create a custom dockerfile we the needed instructions. I’m going to update the article to include those. Thank you for your attention.


Well done,

How to link the volumes: mariadb: to host disk folder?
Thank you.


If I understand correctly, you want to create a bind mount for mariadb so that a directory in your host is mounted inside the container. Say for example you want to mount a “db” directory in your filesystem (I will assume it’s in the same folder where the docker-compose.yml file is) to /var/lib/mysql inside the container, the syntax you should use in the docker-compose.yml file is:

        - ./db:/var/lib/mysql:z

You can use both an absolute or relative path for the local directory. The suffix :z has meaning only if you are running SElinux.