I've been searching the web and reading manuals and I just can't seem to get my head around what is wrong with my Docker setup.
To container-ize Apache, PHP and MySQL allowing them to be customized on a per-project basis. The only dependency to deploy the stack should be docker. All other dependencies / actions should be able to be able to be built / run via
The Proof of Concept
From my Apache + MySQL + PHP stack via
docker-compose.yml file - I'd like to target an
index.php page to successfully render
Hello Docker! along with a list of all available databases.
When I visit
docker.dev/index.php in my browser, rather than the PHP code running, I can only view the PHP source code. This is what I see:
<?php /** * This file: * Has not been tested * Does not use prepared statements * Is for Proof of Concept only! */ $host = '127.0.0.1'; $user = 'root'; $pass = 'docker'; $conn = new mysqli($host, $user, $pass); $sql = 'show databases'; $results = $conn->query($sql); ?> <h1>Hello Docker!</h1> <ul> <?php while ($row = $results->fetch_assoc()) : ?> <li><?= $row['Database'] ?></li> <?php endwhile ?> </ul>
My understanding (which may be mistaken) is that Apache is correctly handling the virtual host, but doesn't know to load the PHP file through an Apache PHP Module.
I have setup Apache to
depends_on PHP and I have linked them through a
network (along with MySQL) but obviously I'm missing something or else everything would be working just as I want it to).
I have created an repo on github that should allow you to test my setup with a few simple commands:
git clone https://github.com/dambrogia/docker-testing.git cd docker-testing docker-compose up -d
You will also have to edit add
127.0.0.1 in your hosts file on your host machine!
How can I render the PHP rather than read the source of it when I visit
I do not want to use a PHP and Apache combined image if at all possible. I would like to have three separate containers - PHP, Apache, MySQL.