A simple and slim apache/php docker image using Alpine Linux
docker build --no-cache -t [image-name]:latest .
Specify the web app root to a folder inside your website code, for example: public/.
Specify the user id which apache will use to execute its child processes, useful for development mode.
Controls log files redirection.
Log files can now be redirected to STDOUT and STDERR if needed, can be customized to redirect only access logs or only error logs, both or none.
This can be done by setting the LOG_CONF environment variable, the supported values are:
Value | Behavior |
---|---|
all | Redirect access and error logs to STDOUT and STDERR respectively |
access | Redirect access logs to STDOUT, error logs are kept inside the container |
error | Redirect error logs to STDERR, access logs are kept inside the container |
none or empty or any other value | Don't redirect any log, logs are kept inside the container |
Development mode will let you mount a folder containing your website inside the container, and be able to do live changes to code while the container is running, in order for this to work the WEBAPP_USER_ID env variable most be set to the user owning that folder (id -u
will return that id in linux).
docker run --name=webapp -v /path/to/webapp:/app -e WEBAPP_USER_ID=$(id -u) -p 80:80 [image-name]:latest
The document root can be customized by using an env variable WEBAPP_ROOT to specify a subfolder containing the document app root.
docker run --name=webapp -e "WEBAPP_ROOT=[Web app root if any, ex. public/]" -v /path/to/webapp:/app -e WEBAPP_USER_ID=$(id -u) -p 80:80 [image-name]:latest
Tested only in linux, user permissions may not work in windows envs.
Build a new docker container using this one as base and copy the contents of your web site:
FROM wichon/alpine-apache-php:latest
COPY . /app
In development mode, this container will change the ownership of all your files inside /path/to/webapp to the user id running the container.