├── Dockerfile ├── README.md ├── config ├── php-docker.ini └── xdebug-docker.ini └── docker-compose.yml /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM drupal:8.2-apache 2 | MAINTAINER Paul McCrodden 3 | 4 | # Install packages. 5 | RUN apt-get update 6 | RUN apt-get install -y \ 7 | vim \ 8 | git \ 9 | php5-cli \ 10 | php5-xdebug \ 11 | mysql-client \ 12 | wget \ 13 | iputils-ping \ 14 | zip \ 15 | unzip 16 | RUN apt-get clean 17 | 18 | # Install Composer. 19 | RUN curl -sS https://getcomposer.org/installer | php 20 | RUN mv composer.phar /usr/local/bin/composer 21 | 22 | # Install Drush via composer. 23 | RUN composer global require drush/drush:8 24 | 25 | # Configure composer bin path for drush inside container and from exec. 26 | RUN echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> /root/.bashrc 27 | ENV PATH /root/.composer/vendor/bin:$PATH 28 | 29 | # Setup PHP. 30 | COPY ./config/php-docker.ini /usr/local/etc/php/conf.d/ 31 | COPY ./config/php-docker.ini /etc/php5/cli/conf.d/ 32 | 33 | # Setup XDebug. 34 | COPY ./config/xdebug-docker.ini /usr/local/etc/php/conf.d/ 35 | RUN echo "zend_extension = '$(find / -name xdebug.so 2> /dev/null)'\n$(cat /usr/local/etc/php/conf.d/xdebug-docker.ini)" > /usr/local/etc/php/conf.d/xdebug-docker.ini 36 | RUN cp /usr/local/etc/php/conf.d/xdebug-docker.ini /etc/php5/cli/conf.d/ 37 | 38 | # Map directory ownership (docker-machine-nfs setup). 39 | RUN usermod -u 501 www-data 40 | RUN usermod -G dialout www-data 41 | 42 | # Map directory ownership (standard setup). 43 | #RUN usermod -u 1000 www-data 44 | #RUN usermod -G staff www-data 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker Compose: Drupal 2 | 3 | Drupal development environment using [Docker Compose](https://docs.docker.com/compose/). 4 | 5 | ### Branches: 6 | *php-fpm-nginx* => php-fpm, nginx, mysql, solr. 7 | *apache* => apache, mysql, solr. 8 | 9 | ## Prerequisites 10 | 11 | 1. [Docker](http://docker.com) 12 | ``` 13 | docker --version 14 | ``` 15 | 2. [Docker Compose](https://docs.docker.com/compose/) 16 | ``` 17 | docker-compose --version 18 | ``` 19 | 3. [Docker Machine NFS](https://github.com/adlogix/docker-machine-nfs) (optional) 20 | * Mac Users using this script to use NFS should be able to use default setup. 21 | * If not using NFS or on other OS, see [Dockerfile](https://github.com/mccrodp/drupal-docker-compose/blob/master/Dockerfile) for directory ownership mapping. 22 | 23 | ## Usage 24 | 25 | 1. Place Drupal in the `/drupal/` directory so that it lives at `docker-compose-drupal/drupal`. 26 | 2. (optional) Create a `/build/` directory outside of this repo and clone [Apache Solr for Drupal](https://github.com/mxr576/apachesolr-drupal-docker) there. 27 | 3. Run `docker-compose up` 28 | 4. Visit `http://VBOXNET_IP:8000` in your browser 29 | 5. Use `drupal:drupal@mysql/drupal` for the database settings. e.g. `docker exec -i drupaldockercompose_mysql_1 mysql -udrupal -pdrupal drupal < database_dump.sql` 30 | 6. To run a [Drush](http://drush.org) command, execute `docker-compose exec web drush status` 31 | 32 | ## License 33 | 34 | Licensed under the [permissive](http://en.wikipedia.org/wiki/Permissive_free_software_licence) [MIT license](http://creativecommons.org/licenses/MIT/). 35 | 36 | ## Thanks 37 | With thanks to Rob Loach for his [Docker Compose repo](https://github.com/RobLoach/docker-compose-drupal), @wadmiraal for his [Docker Drupal repo](https://github.com/wadmiraal/docker-drupal/) and [Karol Sojko](https://github.com/karolsojko), my fellow colleague from [X-Team](x-team.com) for all their help, directly & indirectly. 38 | 39 | Copyright © 2016+ [Paul McCrodden](http://opensourceopenmind.ninja) 40 | -------------------------------------------------------------------------------- /config/php-docker.ini: -------------------------------------------------------------------------------- 1 | max_execution_time = 120 2 | memory_limit = 512M 3 | upload_max_filesize = 20M 4 | post_max_size = 20M 5 | -------------------------------------------------------------------------------- /config/xdebug-docker.ini: -------------------------------------------------------------------------------- 1 | xdebug.idekey = 'PHPSTORM' 2 | xdebug.remote_enable = true 3 | xdebug.remote_connect_back = true 4 | xdebug.max_nesting_level = 300 5 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | # Main Apache Server 2 | web: 3 | build: . 4 | ports: 5 | - "8000:80" 6 | volumes: 7 | - ./drupal:/var/www/html 8 | links: 9 | - mysql:mysql 10 | # - solr:solr 11 | working_dir: /var/www/html 12 | expose: 13 | - "8000" 14 | 15 | # MySQL Server 16 | mysql: 17 | image: mysql:5.7 18 | environment: 19 | MYSQL_USER: drupal 20 | MYSQL_PASSWORD: drupal 21 | MYSQL_DATABASE: drupal 22 | MYSQL_ROOT_PASSWORD: '' 23 | MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' 24 | expose: 25 | - "3306" 26 | # Optional - Apache Solr Config 27 | # solr: 28 | # build: ../build/apachesolr-drupal-docker/4.x 29 | # ports: 30 | # - "8983:8983" 31 | # expose: 32 | # - "8983" 33 | --------------------------------------------------------------------------------