Docker image for Drupal development.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
config/mc
sites-available
vim/colors
30-local-cli.ini
30-local-fpm.ini
Dockerfile
README.md
bashrc
cmd.sh
config.inc.php
dockerignore
drush.complete.sh
drushrc.php
dumper.php
gitconfig
gitignore
request-ssl.sh
sudoers
vimrc
xdebug.sh

README.md

Docker LEMP stack for Drupal development

The container is intended for local usage and should never be used in production environment.

What is inside

  • Nginx
  • MariaDB
  • PHP 7
  • phpMyAdmin
  • Adminer
  • Xdebug
  • Composer
  • PHP-CS-Fixer
  • Drush
  • Drupalcs
  • Drupal Code Generator
  • MailHog
  • NPM tools (Grunt, Gulp, etc)
  • SSH server

Creating the container

Basically you can create the container in two ways. The first one (classic) is exposing container services through the explicit port mapping.

#! /bin/bash

PROJECT_NAME=example
PROJECT_DIR=/var/docker/projects/$PROJECT_NAME

docker create \
 -h $PROJECT_NAME \
 -p 80:80 \
 -v $PROJECT_DIR/www:/var/www \
 -v $PROJECT_DIR/mysql:/var/lib/mysql \
 --name $PROJECT_NAME \
 --group-add sudo \
 --group-add www-data \
 attr/drupal-lemp

At this point the container can be started with the following command docker start example. Having this done you can access web server index page by navigating to the following url: http://localhost.

The second way requires you to create custom docker network.

#! /bin/bash

docker network create \
  --subnet=172.28.0.0/16 \
  --gateway=172.28.0.254 \
  my-net

Now the container can be created as follows:

#! /bin/bash

PROJECT_NAME=example
PROJECT_DIR=/var/docker/projects/$PROJECT_NAME

docker create \
 -h $PROJECT_NAME \
 -v $PROJECT_DIR/www:/var/www \
 -v $PROJECT_DIR/mysql:/var/lib/mysql \
 --net my-net \
 --ip 172.28.0.1 \
 --name $PROJECT_NAME \
 --group-add sudo \
 --group-add www-data \
  attr/drupal-lemp

The IP address may be whatever you like but make sure it belongs the subnet you created before. It can be helpful to map the IP address to a hostname using /etc/hosts file.

172.28.0.1 example.local

New containers can be attached to the same network or to a distinct one for better isolation.

Connecting to the container

It is strongly recommended you connect to the container using lemp account.

docker exec -itu lemp:www-data example bash

You may create an alias for less typing.

echo 'alias example="docker start example && docker exec -itu lemp example bash"' >> ~/.bashrc

Xdebug

Xdebug is switched off by default by performance reason. Run the following command to switch it on before debugging.

sudo xdebug on

Available ports

  • 22 - SSH
  • 80 - HTTP
  • 443 - HTTPS
  • 1025 - MailHog SMTP
  • 3306 - MySQL
  • 8025 - MailHog web UI
  • 8088 - PhpMyAdmin
  • 8089 - Adminer

Access

  • Host user name - lemp
  • Host user password - 123
  • MySQL root password - 123