Code Monkey home page Code Monkey logo

docker-lamp's Introduction

Native docker-based local environment for Drupal

Use this Docker compose file to spin up local environment for Drupal with a native Docker app

This docker setup works with Debian 8, Apache 2.4, MySQL 5.7/5.6/5.5/ and PHP 7.1/7.0/5.6.

This is keopx Docker Drupal optimized images for apache-php with varnish and MySQL.


Overview

The Drupal bundle consist of the following containers:

Container Version Service name Image Public Port Enabled by default
Varnish 4.0 varnish keopx/varnish 80
Apache PHP 7.1/7.0/5.6 apache-php keopx/apache-php 8008
MySQL 5.7/5.6/5.5 mysql keopx/mysql 3306
phpMyAdmin phpmyadmin phpmyadmin/phpmyadmin 8080
Mailhog mailhog mailhog/mailhog 8025 - 1025

Instructions

Feel free to adjust volumes and ports in the compose file for your convenience.

Usage

Run:

$ docker-compose up -d

Stop:

$ docker-compose stop

Or down (warning: this command remove volume changes):

$ docker-compose down

Run bash

docker exec -it dockerlamp_web_1 /bin/bash

Replace dockerlamp_web_1 with name of:

docker-compose ps

Containers

Varnish

Available tags are:

Apache PHP

MySQL

phpMyAdmin

This is a default image. Only use to have a easy access to database information.

MailHog

This is a default image. Use to have easy mailsender and mail watcher to test email without send to real account.

Custom settings

Varnish

By default we can use a standard default.vcl.

In addition, you can check a varnish vcl for Drupal in drupal-base.vcl

drupal-base.vcl for Drupal

You can check a special varnish vcl file for Drupal drupal-base.vcl based in NITEMAN config file: drupal-base.vcl

Note: drupal-base.vcl uses MIT license.

If you like to add drupal-base.vcl add this lines. Added by default

    volumes:
      - ./config/varnish/drupal-base.vcl:/etc/varnish/default.vcl

Environment

The first two lines works to setup a default varnish port and memory usage limit.

The second two lines only works to change default.vcl setup to run correctly.

web is name of linked apache-php image name.

    environment:
      - VARNISH_PORT=80
      - VARNISH_MEMORY=500M
      # Next values only works with default default.vcl file.
      - VARNISH_BACKEND_IP=web
      - VARNISH_BACKEND_PORT=80

Apache PHP

Web Data Volume

    volumes:
      - ./data/www:/var/www # Data.

Apache Virtualhost

By default you can use http://localhost as working place. But if you would like a custom host to work add this changes.

You can see volumes to check existing configurations for vhosts. vhosts volume mount by default to help with setup.

    - ./config/vhosts:/etc/apache2/sites-enabled

Note: this example is for www.drupal8.local site.

#!bash

cp config/vhosts/example.conf.example config/vhosts/drupal8.conf
sed -i 's/example/drupal8/' config/vhosts/drupal8.conf

NOTE: review your project path.

Add to /etc/hosts new site name:

echo "127.0.0.1 drupal8.local www.drupa8.local" >> /etc/hosts

And reload system:

$ docker-compose stop
$ docker-compose up -d

PHP

Use some setup by default. You can (un)comment to change behaviour.

You can see two php.ini templates with different setup, development and production setup.

In addition, you can check xdebug and xhprof configuration, the same file for php 7.1, 7.0 and 5.6, and opcache recomended file version for Drupal.

PHP 5.6
      # php.ini for php 5.6 and remove environment varibles.
      - ./config/php/php.ini:/etc/php5/apache2/php.ini
      # Xdebug for php 5.6.
      - ./config/php/xdebug.ini:/etc/php5/apache2/conf.d/20-xdebug.ini
      # Xhprof for php 5.6.
      - ./config/php/xhprof.ini:/etc/php5/apache2/conf.d/20-xhprof.ini      
PHP >= 7.0

This example is for PHP 7.0. If you would like use PHP 7.1 change the next lines from 7.0 to 7.1.

      # php.ini for php 7.x and remove environment varibles.
      - ./config/php/7.0/php.ini:/etc/php/7.0/apache2/php.ini
      # Opcache for php 7.0.
      - ./config/php/opcache-recommended.ini:/etc/php/7.0/apache2/conf.d/10-opcache.ini
      # Xdebug for php 7.0.
      - ./config/php/xdebug.ini:/etc/php/7.0/apache2/conf.d/20-xdebug.ini
      # Xhprof for php 7.0.
      - ./config/php/xhprof.ini:/etc/php/7.0/apache2/conf.d/20-xhprof.ini

e.g.: if you need add more PHP memory_limit modify ./config/php-{version}/php.ini file and reload system to works:

$ docker-compose stop
$ docker-compose up -d

Drush

If you need run some drush command to sync with some alias, to access to remote sync database or files you can uncomment next line to works into docker image.

      # Drush support. e.g.
      - ~/.drush:/root/.drush

SSH

If you need run some command, like a composer, to access to remote using ssh keys, you can uncomment next line to works into docker image.

      # SSH support. e.g.
      - ~/.ssh:/root/.ssh

Environment

You can check in docker-composer.yml two special environment variable to setup SMTP service to test local emails.

The apache-php has ssmtp sender package. Here default setup to run by default with mailhog.

Use to connect to MailHog mail instead localhost.

    environment:
      # ssmtp mail sender.
      - PHP_SENDMAIL_PATH="/usr/sbin/ssmtp -t"
      # SMTP server configruation: "domain:port" | "mail" server domain is mailhog name.
      - PHP_SENDMAIL_DOMAIN=mail:1025

MySQL

Use to connect to MySQl mysql instead localhost.

MySQL Data Volume

    volumes:
      - ./data/database:/var/lib/mysql

Custom my.cnf

You can check my.cnf and change you need variables.

      ## Custom setup for MySQL
      - ./config/mysql/my.cnf:/etc/mysql/my.cnf

Environment

  • MYSQL_ROOT_PASSWORD: The password for the root user. Defaults to a blank password.
  • MYSQL_DATABASE: A database to automatically create. If not provided, does not create a database.
  • MYSQL_USER: A user to create that has access to the database specified by MYSQL_DATABASE.
  • MYSQL_PASSWORD: The password for MYSQL_USER. Defaults to a blank password.
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=drupal
      - MYSQL_USER=drupaluser
      - MYSQL_PASSWORD=drupalpass

phpMyAdmin

Use to connect to MySQl mysql instead localhost.

Environment

  • PMA_HOST: Host to connect phpMyAdmin.
    environment:
      - PMA_HOST=mysql

MailHog

Default image and setup.

docker-lamp's People

Contributors

keopx avatar isholgueras avatar

Watchers

Zied Ellouze avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.