About
The automated build docker lamp image “linuxconfig/lamp” can be used as a testing and also as a production environment for a dynamic PHP applications. It comprises of Debian GNU/Linux, Apache webserver, MariaDB a community-developed fork of the MySQL relational database management system and PHP scripting language.
Deployment
The deployment of “linuxconfig/lamp” docker image is a fairly simple procedure. Let’ start by creating a sample PHP website with a MariaDB connection handle:
<?php
$dbh = mysqli_connect('localhost', 'admin', 'pass');
if (!$dbh) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully to MariaDB database';
mysqli_close($dbh);
?>
Save the above code into index.php file and within a new html directory. Alternatively,html directory may contain your desired PHP application:
$ mkdir html $ vi html/index.php $ ls html/ index.php
At this stage we are ready to deploy “linuxconfig/lamp” docker image:
$ sudo docker run --name=lamp -dP -v $PWD/html:/var/www/html linuxconfig/lamp c2d1687aef21f8a12a7fbb31bf8cf71c1e5adabf381bc6d70e8804c6663f0bc0
By executing the above command we have created and started a new docker container named lamp. At the same time we have also mounted our website development directory html as apache’s root directory. Both, MariaDB and Apache ports are now bound to a host system’s random port. The both local ports can now be used to access both MariaDB and Apache services :
$ sudo docker port lamp 80/tcp -> 0.0.0.0:49156 3306/tcp -> 0.0.0.0:49155
Apache Access
At this stage Nginx webserver and our website can be accessed via ports given by $ sudo docker port lamp command. Use command line or your browser to navigate to http://localhost:49156 URL:
$ curl -i http://localhost:49156 HTTP/1.1 200 OK Date: Thu, 21 May 2015 00:39:52 GMT Server: Apache/2.4.10 (Debian) Set-Cookie: 6b690bb29883a1fb2d50e5547712a052=5qdo9u7m32e64jncjb7v30p8k3; path=/; HttpOnly Expires: Mon, 1 Jan 2001 00:00:00 GMT Last-Modified: Thu, 21 May 2015 00:39:52 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 Connected successfully to MariaDB database
MariaDB ( MySQL ) Access
The MariaDB database can be accessed via admin user and default password pass. As previously, first we need to obtain the host system port number linked to MariaDB database within a docker image by using $ sudo docker port lamp command. Next, we can connect to database:
mysql -uadmin -ppass -h 127.0.0.1 -P49155 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.5.43-0+deb8u1 (Debian) Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
Additional Information
Reset MariaDB user password
The below command will set a new password 123for theadmin user :
SET PASSWORD FOR 'admin'@'%' = PASSWORD('123');
Restart lamp stack
$ sudo docker exec lamp service supervisor restart
Container Access
While your lamp container is running it can be access by:
$ sudo docker exec -it lamp /bin/bash root@733ae4bebf83:/#