Skip to content

unixelias/lamp

 
 

Repository files navigation

unixelias/lamp

docker_logo

This Docker container implements a last generation of LAMP stack with a set of popular PHP modules. Includes support for Composer, Yarn and npm package managers and a Postfix service to allow sending emails through PHP mail() function.

I have made a docker-compose.yml file to show how to use and map additional services like MariaDB, Node.JS and MongoDB. This image still have Node.Js inside, but just for use of npm and library dependecy management.

Includes the following components:

  • Ubuntu 16.04 LTS Xenial Xerus base image.
  • Apache HTTP Server 2.4
  • Postfix 2.11
  • PHP 7
  • PHP modules
    • php-bz2
    • php-cgi
    • php-cli
    • php-common
    • php-curl
    • php-dbg
    • php-dev
    • php-enchant
    • php-fpm
    • php-gd
    • php-gmp
    • php-imap
    • php-interbase
    • php-intl
    • php-json
    • php-ldap
    • php-mcrypt
    • php-mysql
    • php-odbc
    • php-opcache
    • php-pgsql
    • php-phpdbg
    • php-pspell
    • php-readline
    • php-recode
    • php-snmp
    • php-sqlite3
    • php-sybase
    • php-tidy
    • php-xmlrpc
    • php-xsl
  • Development tools
    • git
    • composer
    • npm
    • yarn
    • vim
    • tree
    • nano
    • ftp
    • curl

Installation from Docker registry hub.

You can download the image using the following command:

docker pull unixelias/lamp

Environment variables

This image uses environment variables to allow the configuration of some parameteres at run time:

  • Variable name: LOG_STDOUT
  • Default value: Empty string.
  • Accepted values: Any string to enable, empty string or not defined to disable.
  • Description: Output Apache access log through STDOUT, so that it can be accessed through the container logs.

  • Variable name: LOG_STDERR
  • Default value: Empty string.
  • Accepted values: Any string to enable, empty string or not defined to disable.
  • Description: Output Apache error log through STDERR, so that it can be accessed through the container logs.

  • Variable name: LOG_LEVEL
  • Default value: warn
  • Accepted values: debug, info, notice, warn, error, crit, alert, emerg
  • Description: Value for Apache's LogLevel directive.

  • Variable name: ALLOW_OVERRIDE
  • Default value: All
  • All, None
  • Accepted values: Value for Apache's AllowOverride directive.
  • Description: Used to enable (All) or disable (None) the usage of an .htaccess file.

  • Variable name: DATE_TIMEZONE
  • Default value: UTC
  • Accepted values: Any of PHP's supported timezones
  • Description: Set php.ini default date.timezone directive and sets MariaDB as well.

  • Variable name: TERM
  • Default value: dumb
  • Accepted values: dumb
  • Description: Allow usage of terminal programs inside the container, such as mysql or nano.

Exposed port and volumes

The image exposes port 80, and exports the volumes:

The user and group owner id for the DocumentRoot directory /var/www/html are both 33 (uid=33(www-data) gid=33(www-data) groups=33(www-data)).

Use cases

Create a temporary container for testing purposes:

	docker run -i -t --rm unixelias/lamp bash

Create a temporary container to debug a web app:

	docker run --rm -p 8080:80 -e LOG_STDOUT=true -e LOG_STDERR=true -e LOG_LEVEL=debug -v /my/data/directory:/var/www/html unixelias/lamp

Create a container linking to another MySQL container:

	docker run -d --link my-mysql-container:mysql -p 8080:80 -v /my/data/directory:/var/www/html -v /my/logs/directory:/var/log/httpd --name my-lamp-container unixelias/lamp

Get inside a running container and open a MariaDB console:

	docker exec -i -t my-lamp-container bash
	mysql -u root

About

🐳 Docker container running the latest version of the LAMP stack.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 96.7%
  • PHP 3.3%