Thu 02 April 2015

Filed under Howto

Tags Linux Containers Development systemd

It was the year of 2015 and people were still developing new applications in PHP... but for those who could no longer accept the idea of installing a system-wide LAMP stack, there was a new-old fassionable thing: Containers!

This is a quick howto for creating a throw-away container for messing around with PHP apps on Fedora. Most of it is taken from the examples at the bottom of 'man 1 systemd-nspawn'

Create the directory for the container filesystem:

[user@host]$ mkdir web-dev-container

Install a minimal Fedora image (including apache and php) into the new container root:

[user@host]$ sudo yum -y --releasever=21 --nogpg --installroot=$(pwd)/web-dev-container --disablerepo='*' --enablerepo=fedora install systemd passwd yum fedora-release less vim iproute httpd php

Update the SELinux context:

[user@host]$ sudo semanage fcontext -a -t svirt_sandbox_file_t "web-dev-container(/.*)?"
[user@host]$ sudo restorecon -R web-dev-container

Spawn the new container:

[user@host]$ sudo systemd-nspawn -D web-dev-container

In the new container, change the root password:

[root@container]# passwd
[root@container]# logout

Boot the new container:

[user@host]$ sudo systemd-nspawn -bD web-dev-container

Enable and start the web server and check that it's running:

[root@container]# systemctl enable httpd.service
[root@container]# systemctl start httpd.service
[root@container]# ss -lt

Check http://localhost in a web browser.

Add an index.html file:

[root@container]# echo "Hello World" >> /var/www/html/index.html
[root@container]# echo "<?php echo \"Hello PHP World\" ?>" > /var/www/html/index.php

Refresh http://localhost

Check http://localhost/index.php

You can now logout of the container (it will keep running).

Change the ownership and hack away!

[user@host]$ sudo chown -R user.user web-dev-container/var/www/html
[user@host]$ vim web-dev-container/var/www/html/index.php

Login to the container, if needed:

[user@host]$ sudo machinectl login web-dev-container

Exit the container by pressing ^] three times in one second.



rationali.st © Andrew Cooks