Public | Automated Build

Last pushed: 2 years ago
Short Description
Short description is empty for this repo.
Full Description

#osx-docker-apache-php, a.k.a dgraziotin/apache-php
As of Docker for Mac v1.12.0, there is no need for using my Docker images anymore. Thanks for the support!

Out-of-the-box Apache+PHP Docker image that *just works* on Mac OS X. 
Including write support for mounted volumes (Website).
No matter if using the official boot2docker or having Vagrant in the stack, as well.

osx-docker-apache-php, which is known as
is a reduced fork of
which is an "Out-of-the-box LAMP image (PHP+MySQL) for Docker".

Some info about osx-docker-apache-php:

  • It is based on phusion/baseimage:latest
    instead of ubuntu:trusty.
  • It works flawlessy regardless of using boot2docker standalone or with Vagrant. You will need to set three enrironment varibles, though.
  • It fixes OS X related write permission errors for Apache
  • It lets you mount OS X folders with write support as volumes for
    • The website
  • It is documented for less advanced users (like me)


If using Vagrant, please see the extra steps in the next subsection.

docker build -t youruser/apache-php .

If you wish, you can push your new image to the registry:

docker push youruser/apache-php

Otherwise, you are free to use dgraziotin/apache-php as it is provided. Remember first
to pull it from the Docker Hub:

docker pull dgraziotin/apache-php


If, for any reason, you would rather use Vagrant (I suggest using AntonioMeireles/boot2docker-vagrant-box), you need to add the following three variables when running your box:

-VAGRANT_OSX_MODE="true" for enabling Vagrant-compatibility
-DOCKER_USER_ID=$(id -u) for letting Vagrant use your host user ID for mounted folders
-DOCKER_USER_GID=$(id -g) for letting Vagrant use your host user GID for mounted folders

See the Environment variables section for more options.

###Running your Apache+PHP docker image

If you start the image without supplying your code, e.g.,

docker run -t -i -p 80:80 --name website dgraziotin/apache-php

At http://[boot2docker ip, e.g.,] you should see an
"Hello world!" page.

###Loading your custom PHP application

In order to replace the Hello World application that comes bundled with this
docker image, my suggested layout is the following:

  • Project name folder
    • app subfolder

The app folder should contain the root of your PHP application.

Run the following code from within the Project name folder.

docker run -i -t -p "80:80" -v ${PWD}/app:/app --name yourwebapp dgraziotin/apache-php

Test your deployment:

http://[boot2docker ip]

##Environment description

###The /app folder

Apache is configured to serve the files from the /app folder, which is a symbolic
link to /var/www/html. In osx-docker-apache-php, the apache user www-data
has full write permissions to the app folder.


Apache is pretty much standard in this image. It is configured to serve the Web app
at app as / and phpMyAdmin as /phpmyadmin. Mod rewrite is enabled.

Apache runs as user www-data and group staff. The write support works because the
user www-data is configured to have the same user id as the one employed by boot2docker (1000).

##Environment variables

  • APACHE_ROOT tells Apache which folder within the app volume so serve as the web root.
  • PHP_UPLOAD_MAX_FILESIZE="10M" will change PHP upload_max_filesize config value
  • PHP_POST_MAX_SIZE="10M" will change PHP post_max_size config value
    -VAGRANT_OSX_MODE="true" for enabling Vagrant-compatibility
    -DOCKER_USER_ID=$(id -u) for letting Vagrant use your host user ID for mounted folders
    -DOCKER_USER_GID=$(id -g) for letting Vagrant use your host user GID for mounted folders

Set these variables using the -e flag when invoking the docker client.

docker run -i -t -p "80:80"-v ${PWD}/app:/app -e PHP_UPLOAD_MAX_FILESIZE="10M" --name yourwebapp dgraziotin/apache-php
Docker Pull Command