All Projects → ricardoamaro → Drupal Lxc Vagrant Docker

ricardoamaro / Drupal Lxc Vagrant Docker

Deploy and develop on Drupal with LXC, Vagrant and Docker. Includes: nginx,php-fpm,apc,xhprof,mysql,phpmyadim,composer

Labels

Projects that are alternatives of or similar to Drupal Lxc Vagrant Docker

Vagrant Graphite
An Example puppetized setup of grahpite, jmxtrans, collectd , logster
Stars: ✭ 58 (-38.3%)
Mutual labels:  puppet
Puppet Php
Puppet module to manage php (Apache, CLI, FPM)
Stars: ✭ 69 (-26.6%)
Mutual labels:  puppet
Puppet Textmate Bundle
a TextMate puppet manifests bundle
Stars: ✭ 82 (-12.77%)
Mutual labels:  puppet
Puppetlabs Dsc
Puppet module for PowerShell Desired State Configuration (DSC) integration
Stars: ✭ 63 (-32.98%)
Mutual labels:  puppet
Puppet Cleaner
Transforms puppet DSL source code to make it comply with the style guide
Stars: ✭ 68 (-27.66%)
Mutual labels:  puppet
Puppet Playground
A Vagrant MultiOS environment to test Puppet code and modules
Stars: ✭ 73 (-22.34%)
Mutual labels:  puppet
Puppet Filebeat
Stars: ✭ 54 (-42.55%)
Mutual labels:  puppet
Deaddropdocs
Installation, configuration and security hardening guidance for DeadDrop
Stars: ✭ 87 (-7.45%)
Mutual labels:  puppet
Puppetlabs Image build
Build Docker images from Puppet code
Stars: ✭ 69 (-26.6%)
Mutual labels:  puppet
Flaming Archer
Photo 365 application. Built to support my own 365 project and to learn a few new technologies.
Stars: ✭ 82 (-12.77%)
Mutual labels:  puppet
Biemond Orawls
Puppet 3/4 module for WebLogic provisioning module ( Linux & Solaris )
Stars: ✭ 63 (-32.98%)
Mutual labels:  puppet
Puppet System
Manage Linux system resources and services from hiera configuration
Stars: ✭ 65 (-30.85%)
Mutual labels:  puppet
Jenkins Infra
Jenkins main control repo for R10k and our Puppet Enterprise managed infrastructure
Stars: ✭ 76 (-19.15%)
Mutual labels:  puppet
Puppet Foreman
UNOFFICIAL CLONE use https://github.com/theforeman/foreman-installer
Stars: ✭ 58 (-38.3%)
Mutual labels:  puppet
Puppet Php
Generic Puppet module to manage PHP on many platforms
Stars: ✭ 83 (-11.7%)
Mutual labels:  puppet
Stagr
Staging Server installer for Fortrabbit
Stars: ✭ 56 (-40.43%)
Mutual labels:  puppet
Puppet Gitlab
Puppet module to manage Gitlab (Omnibus)
Stars: ✭ 73 (-22.34%)
Mutual labels:  puppet
Puppet Mongodb
mongodb installation
Stars: ✭ 90 (-4.26%)
Mutual labels:  puppet
Sandbox Symfony
Experimental Symfony Sandbox on Vagrant
Stars: ✭ 83 (-11.7%)
Mutual labels:  puppet
Puppet Letsencrypt
A Puppet module to install the Letsencrypt client and request certificates.
Stars: ✭ 79 (-15.96%)
Mutual labels:  puppet

drupal-lxc-vagrant-docker

What are these?

LXC is a lightweight virtualization method that provides operating system-level virtualization optional to an heavy full virtual machine. It relies on the Linux kernel cgroups functionality that became available in version 2.6.24, It provides a virtual environment that has its own process and network space. This option makes the perfect option for deploying several contained Drupal dev environments independent of the distribution.Docker is a solution from dotCloud, which simplifies and improves the process of creating and managing Linux containers. Vagrant 1.1+ lxc plugin allows it to control and provision Linux Containers as an alternative to the built in (and heavy) Vagrant VirtualBox provider for Linux hosts.

Deploy and develop on Drupal with LXC, using Vagrant and/or Docker.

Takes about ~2 minutes to have a full running Drupal development box. Installing Drupal on lxc containers has never been faster and easier.

You will get:

  1. Drupal (latest version)
  2. Nginx
  3. Php + php-fpm
  4. Mysql
  5. Phpmyadmin
  6. xhprof
  7. xdebug
  8. composer

Install

Install latest Vagrant from: http://downloads.vagrantup.com/tags/v1.3.5 or later.

sudo dpkg -i vagrant_1.3.5_x86_64.deb
sudo apt-get install lxc redir git sudo

Clone this code

git clone https://github.com/ricardoamaro/drupal-lxc-vagrant-docker.git
cd ~/drupal-lxc-vagrant-docker

Get the plugin & Deploy

vagrant plugin install vagrant-lxc
vagrant up --provider=lxc 
sudo lxc-ls --fancy

Configue Networking

# redirect port 80 to the host
sudo redir --lport=80 --cport=80 --caddr={container ip} &

your /etc/hosts file should have a line like this:

127.0.2.1	drupal phpmyadmin xhprof

Develop on Drupal

Stop/start lxc container with:

~/drupal-lxc-vagrant-docker# vagrant halt
~/drupal-lxc-vagrant-docker# vagrant up --no-provision

Debug vagrant build if necessary, with:

~/drupal-lxc-vagrant-docker# VAGRANT_LOG=debug vagrant up --provider=lxc

Destroy lxc container with:

~/drupal-lxc-vagrant-docker# vagrant destroy
~/drupal-lxc-vagrant-docker# sudo killall redir

DOCKER

Docker will be used to ship our newly created appliance, deploying it to any linux server, anywhere in the world, whitin a container.

Install docker

sudo apt-get -y install lxc-docker
curl get.docker.io | sudo sh -x

Import container to docker:

sudo tar -C /var/lib/lxc/{container name}/rootfs/ -c . | sudo docker import - dev/drupal

Start docker

sudo docker run -i -t -p :80 dev/drupal /bin/bash

docker image

An already cooked Docker image has been commited to https://index.docker.io, and can be pulled using:

sudo docker pull ricardoamaro/drupal

*There is also a project to build a simple lamp image with Drupal, using Dockerfile: https://github.com/ricardoamaro/docker-drupal

*You can find more images using the Docker Index.

*Information on building your own vagrant-lxc base box: http://fabiorehm.com/blog/2013/07/18/crafting-your-own-vagrant-lxc-base-box/

Future ideas:

  • Since this a pure devops work towards actual running production environments, one of the primary targets is to deploy to the cloud using several hosts to achieve a real hosting structure.
  • Using the shipping container concept of docker it would be great to have the container fill up the several jobs that Drupal work with, like:
  • Separated mysql/mariadb,
  • Redis,
  • Solr,
  • Varnish,
  • Load balancers...

Known Issues

  • Upstart on Docker is broken due to this issue, and that's one of the reasons the image is puppetized using vagrant.
  • Warning: This is still in development and ports shouldn't be open to the outside world.
  • The vagrant uses the vagrant pub ssh key, but you can remove that while using lxc-attach -n {container name}

Contributing

Feel free to fork and contribute to this code. :)

  1. Fork the repo
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Authors

Created and maintained by Ricardo Amaro (<mail_at_ ricardoamaro.com>)

License

GPLv2+

Special Thank you

To these projects for their awesome code: https://github.com/fgrehm/vagrant-lxc https://github.com/mitchellh/vagrant https://github.com/dotcloud/docker https://github.com/puppet/puppet and to all other FreeSoftware used on this repo, including the fabulous http://drupal.org

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].