View on GitHub

Simple Drupal Docker Toolset

Drupal development toolset, quick, easy, no complex configs.

Download this project as a .zip file Download this project as a tar.gz file

Drupal development toolkit based on Docker

Visit at Github Pages: http://reinier-vegter.github.io/Simple-Drupal-Docker-Toolset/

With this toolset, you can install docker and easily fire up any existing Drupal (or php) webroot in 2 seconds.


Credits

Simple Drupal Docker Toolset is sponsored and supported by Finalist B.V.


INSTALLATION

Get this toolset first

Clone git repository somewehere in local folder, or download archive package, and unpack.

git clone https://github.com/reinier-vegter/Simple-Drupal-Docker-Toolset.git ~/docker-drupal

GNU/Linux distro:

OSX

From: https://docs.docker.com/installation/mac/

UPDATE TOOLSET

Do a git pull to fetch the latest master-branch for this toolset. Then, run bin/install.sh again.


AVAILABLE COMMANDS

    - d7-start                        : start drupal 7 container from project folder
    - d7-stop                         : stop container for 'this' project
    - d7-mysql-start                  : start mysql container (triggered by d7-start)
    - d7-mysql-stop                   : stop mysql container
    - d7-solr4-start                  : start solr4 container (triggered by d7-start)
    - d7-solr4-stop                   : stop solr4 container
    - d7-status                       : shows all docker containers (running and stopped)
    - d7-stop-all                     : stops all drupal toolset related containers
    - d7-update-images                : Will pull updated images from repository.
                                        You should run this every once in a while.
    - d7-cleanup                      : Cleanup (stop + remove) all drupal 7 containers.
                                        They are disposable, and usually removed immediately
                                        when you stop a d7 container.
    - d7-logs [num|all]               : Tail all apache logs.
                                        Argument sets number of lines to print, before following.
                                          (Should be integer, or 'all')
                                        Starts 'docker logs --tail=[num] -f [container]'
    - d7-ssh [container (optional)]   : Open shell (bash) in container. Defaults to container in current webroot folder.
    - d7-drush [drush arguments]      : This runs drush with supplied arguments, in the webroot, as web user.
                                        You can alias this if you'd make this transparent on your system, by adding
                                        alias drush="d7-drush"   to your .bashrc file (~/.bashrc).
    - d7-help                         : Show README

Commands for toolset development

    - d7-build-docker-image           : Build / rebuild docker images. This replaces images that are downloaded from dockerhub.

QUICK START

To start your project, go to the project folder, and run 'd7-start' Note that settings.php must contain the mysql-host 'mysql-docker.dev', and that solr is reachable at localhost:8983 from each drupal container.

Building docker images is done the first time you use them ("d7-start"), and can take a while.

Common hostnames


CUSTOM PROJECT CONFIGURATION

Custom docker stuff per project: Add file .d7-docker.conf to your project folder.

Be aware that any bash code in this file is actually executed

Example content of file:

    # Add dependency container.
    # Format: [container name]:[start-script/command]
    # CUST_DEPENDENCIES=(
    #   "docker.mysql:${mydir}/d7-mysql-start.sh"
    #   "docker.solr4:${mydir}/d7-solr4-start.sh"
    # )
    #
    # Add custom link between containers.
    # Format: [dependency container name]:[hostname in 'this' container, mapped to dependency]
    # CUST_LINK=(
    #   "docker.mysql:mysql-docker.dev"
    #   "docker.solr4:solr4-docker.dev"
    # )
    #
    # Mount extra volumes in container.
    # Format: [local folder]:[folder in container]
    # CUST_VOL="/opt/simplesamlphp:/opt/simplesamlphp1"
    #
    # Give container extra hostnames.
    # CUST_HOSTNAMES=(
    #   "dev.my-favorite-hostname.com"
    # )
    #
    # Provide DNS (hosts-file) entries to container, so container can resolve it.
    # For example usefull if you're having trouble to get docker to communicate through host-system VPN.
    # CUST_DNS=(
    #    www.google-dns.com:8.8.4.4
    # )
    #
    # Do not check if this is actually Drupal. Usable for 'other' php apps to be ran in
    # a D7 container.
    # NO_DRUPAL_CHECK=1
    #
    # Enable Varnish cache engine
    # VARNISH_ENABLE=1
    # Note: This will run Varnish on port 80 (so Drupal can talk to varnish on 127.0.0.1:80)
    # and Apache on port 90.
    # Note: To purge a page, let Drupal call URL's on varnish with the PURGE-method (like GET, but
    # make it PURGE...). The purge and expire modules are a very useful combination to do this.
    #
    # Enable memcache daemon
    # MEMCACHED_ENABLE=1
    #
    # Enable XHGui (Currently only for php 5.6).
    # XHGUI_ENABLE=1
    # Visit xhgui at /xhgui .
    # Note that it takes some time to start mongodb.
    #
    # Set PHP version to use
    # PHP_VERSION=5.4
    # Supported versions: 5.4, 5.6, 7.0.
    # Defaults to 5.6
    #
    # Custom per-project php.ini
    # CUST_PHP_INI="/opt/web/flightcontrol/php.ini"
    # Make sure to use an absolute path here!
    #
    # Custom location for Solr config files.
    # Note that the toolset finds 'search_api_solr/solr-conf/4.x' automatically.
    # Only use this if you use some other module, or schema files of your own.
    # SOLR_CONF_OVERRIDES='sites/all/modules/contrib/search_api_solr/solr-conf/4.x'
    #

Use of XDebug

XDebug is installed in the container. To use it with php-storm

That's all...

To use XDebug profiler, just add a 'profiler' folder in your project. It will generate cachegrind files that you can open with KCacheGrind or any other tool. See http://www.xdebug.org/docs/profiler

Override MySQL configuration.

Put your (extra) configuration in ~/.drupal_docker_toolset/mysql.cnf and restart mysql by executing d7-mysql-stop && d7-mysql-start.

Example content:

  [mysqld]
  table_open_cache = 2000
  innodb_buffer_pool_size = 3G