Docker Compose



Docker Compose

0 0


docker-compose-talk

Drupal Development Environments using Docker Compose

On Github mccrodp / docker-compose-talk

Docker Compose

Drupal Development Environments with Docker Compose

Me

  • mccrodp on d.org
  • Work for X-Team
  • Pantheon.io; Website Management Tools
  • Programs: Unleash; Dojo, etc.
  • Want a job? - msg me
  • Me - Drupal Dev since ~D6 (2008) - mccrodp on d.org
  • 100% remote dev company (Symfony, Laravel, React, etc)
  • My work: Drupal 7 - Pantheon.io; marketing site
  • Unleash; upskilling and community work weekly, Dojo: mentoring
  • A job that allows you to travel

What is this talk about?

  • How? complex dev environments...
  • What? Vagrant; Puppet, Chef, Ansible...etc.
  • Confused! I’m not an admin...
  • Boring! Waste of time.
  • Enter Docker :)
  • Boring! I just need to develop this website / software!

What is Docker?

  • An open platform for distributed applications for developers and sysadmins
  • Agility
  • Control
  • Portability
  • Accurately define environments
  • Developers own all code (incl. OS-kinda)
  • Deploy full docker container, e.g. to AWS
  • What are Docker containers?

Containers v.s. VMs

Benefits of Docker!

Dev

  • Accelerate
  • Eliminate
  • Collaborate

Deploy

  • Ship Frequently
  • Scale easily
  • Accelerate Developer Onboarding
  • Eliminate Environment Inconsistencies
  • Easily Share and Collaborate

Docker in the Cloud

Getting started

  • Mac / Win users: install Docker Toolbox ;
    • boot2docker
    • CLI client & Docker Machine
    • Docker Compose: docker-compose
    • Kitematic (GUI) & Docker QuickStart shell
  • DockerHub
  • Demo!
  • VM through Oracle’s VirtualBox
  • Kitematic, the Docker GUI & Docker QuickStart shell
  • Concept: Images v.s. Containers ≈ Classes v.s. Objects
  • DockerHub => docker image repo

But... my DB server?

Options

  • Use mySQLite?
  • or a linked container?

Is this good enough?

  • Extra management
  • More commands

Solution: Docker Compose

“a tool for defining and running multi-container Docker applications” Compose file docker-compose.yml Wrapper CLI docker-compose

Docker Compose file

A docker-compose.yml looks like this:
						
version: '2'
services:
  web:
	build: .
	ports:
	- "5000:5000"
	volumes:
	- .:/code
	- logvolume01:/var/log
	links:
	- redis
  redis:
	image: redis
volumes:
  logvolume01: {}
						
					

Using Docker Compose

  • Configure yml file
  • Up containers! docker-compose up -d
  • Run docker-compose exec container_name drush status
  • Stop docker-compose stop
  • Destroy docker-compose destroy

Demo

  • nginx & apache
  • web (+ nginx), mysql, solr

Conclusion

  • Docker is great
  • Try it out
  • Open any issues on the GitHub repo

Questions?

Ask me!

Contact Details