Public | Automated Build

Last pushed: 2 years ago
Short Description
It's what it says on the tin. Based off of RuslanGetmansky's docker-apache-php with a few changes.
Full Description

Table of Contents


Based on

Additional features:

  • HTTPS virtual host that uses ssl-cert-snakeoil self-signed Ubuntu certificate
  • APACHE_DOC_ROOT environment variable


docker pull ruslangetmansky/docker-apache-php

or other versions (7.0, 5.6, 5.5, 5.4 or 5.3):

docker pull ruslangetmansky/docker-apache-php:5.4

Alternately you can build the image yourself.

git clone
cd docker-apache-php
docker build -t="$USER/docker-apache-php" .

Quick Start

Run the application image:

docker run --name app -d -p 8080:80 ruslangetmansky/docker-apache-php

The simplest way to login to the app container is to use the docker exec command to attach a new process to the running container.

docker exec -it app bash


For development a volume should be mounted at /var/www/app/.

The updated run command looks like this.

docker run --name app -d -p 8080:80 \
  -v /host/to/path/app:/var/www/app/ \

This will make the development.

Custom DocumentRoot

By default virtual host document root matches the root of application /var/www/app/. That can be changed with APACHE_DOC_ROOT environment variable:

docker run --name app -d -p 8080:80 \
  -v /host/to/path/app:/var/www/app/ \
  -e APACHE_DOC_ROOT='/var/www/app/public' \

docker-compose.yml example:

  image: ruslangetmansky/docker-apache-php:5.5
    - .:/var/www/app
    - APACHE_DOC_ROOT=/var/www/app/public

Linked to other container

As an example, will link with RDBMS PostgreSQL.

docker run --name db -d romeoz/docker-postgresql

Run the application image:

docker run --name app -d -p 8080:80 \
  --link db:db \
  -v /host/to/path/app:/var/www/app/ \

Adding PHP-extension

You can use one of two choices to install the required php-extensions:

  1. docker exec -it app bash -c 'apt-get update && apt-get install php5-mongo && rm -rf /var/lib/apt/lists/*'

  2. Create your container on based the current. Сontents Dockerfile:
    FROM ruslangetmansky/docker-apache-php:5.6

RUN apt-get update \
&& apt-get install -y php5-xdebug \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i '$ a xdebug.remote_enable=On' /etc/php5/apache2/conf.d/20-xdebug.ini \
&& sed -i '$ a xdebug.remote_connect_back=On' /etc/php5/apache2/conf.d/20-xdebug.ini

WORKDIR /var/www/app/

EXPOSE 80 443

CMD ["/sbin/"]

Next step,

docker build -t php-5.6 .
docker run --name app -d -p 8080:80 php-5.6

See installed php-extension: docker exec -it app php -m


All the logs are forwarded to stdout and sterr. You have use the command docker logs.

docker logs app

####Split the logs

You can then simply split the stdout & stderr of the container by piping the separate streams and send them to files:

docker logs app > stdout.log 2>stderr.log
cat stdout.log
cat stderr.log

or split stdout and error to host stdout:

docker logs app > -
docker logs app 2> -

####Rotate logs

Create the file /etc/logrotate.d/docker-containers with the following text inside:

/var/lib/docker/containers/*/*.log {
    rotate 31

Optionally, you can replace nocompress to compress and change the number of days.

Out of the box

  • Ubuntu 14.04/12.04 (LTS)
  • Apache 2.4.x/2.2.x
  • PHP 5.3/5.4/5.5/5.6/7.0
  • Composer

Environment depends on the version of PHP.


Apache + PHP container image is open-sourced software licensed under the MIT license

Docker Pull Command
Source Repository