How to run a Docker container with PHP + Apache + MySQL.
To run PHP with Apache:
docker run -d -p 8056:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.2-apache
To connect to an existing MySQL container (see separate HowTo on Docker MySQL):
docker run -d -p 8056:80 --name my-apache-php-app -v "$PWD":/var/www/html --link some-mysql:mysql php:7.2-apache
At this point, there is just only the sqlite database driver installed:
docker exec my-apache-php-app php -i|grep pdo
-> pdo_sqlite
To add the MySQL PHP module to the container, we can either build a new image by hand, or write a Dockerfile to specify and build a new image from. Here is the steps to build a new image by hand:
docker start <containerId>
docker exec -it <containerId> /bin/bash
# apt-get update
#docker-php-ext-install pdo pdo_mysql
At this point, we can restart the container, when the MySQL PHP driver will be loaded and active.
To create a new image from the existing container:
docker commit -a “image-author-name” -m “Added MySQL PDO driver” <containerId> php-7.2-pdo-mysql
And to start a container from the new image:
docker run -d -p 8056:80 –restart=unless-stopped –name <new container name> –link some-mysql:mysql -v /home/admin/var/www/html:/var/www/html php-7.2-pdo-mysql
References:
https://github.com/docker-library/php/issues/62
Another option is to write our own Dockerfile. See other HowTo for that.