Docker for Development: Getting Started Lisa H. Ridley Savas Labs - - PowerPoint PPT Presentation

docker for development getting started
SMART_READER_LITE
LIVE PREVIEW

Docker for Development: Getting Started Lisa H. Ridley Savas Labs - - PowerPoint PPT Presentation

Docker for Development: Getting Started Lisa H. Ridley Savas Labs DrupalCamp Chattanooga November 5, 2016 Who am I? Lisa Ridley, Director of Client Success, Savas Labs Lead Developer and Project Manager Automated Testing Champion


slide-1
SLIDE 1

Lisa H. Ridley Savas Labs

Docker for Development: Getting Started

DrupalCamp Chattanooga November 5, 2016

slide-2
SLIDE 2

Who am I?

Lisa Ridley, Director of Client Success, Savas Labs

  • Lead Developer and Project Manager
  • Automated Testing Champion (Unit, Functional, User Acceptance, Visual

Regression)

  • drupal.org: lhridley
  • twitter: lhridley
  • GitHub: github.com/lhridley & github.com/codementality
  • LInkedIn: https://www.linkedin.com/in/lisahridley
  • Blog: http://savaslabs.com/blog/

2

slide-3
SLIDE 3

3

What is your development environment?

Development Environment # users MAMP / WAMP / Locally installed LAMP/LEMP Stack 10 Vagrant / VMWare / Parallels / VirtualBox — Virtual Machines 6 Remote server 4 Docker / Containers 3 Other

slide-4
SLIDE 4

What is Docker?

  • Automates the deployment of applications

in software containers

  • Operating system abstraction layer
  • Open Source Project (May 2013)

4

slide-5
SLIDE 5

5

What is a Docker software container

  • An isolated user-space instance — that contains a complete

application with all dependencies and components needed to run properly

  • Shares the underlying O/S kernel
  • Looks and feels like a real server

5

slide-6
SLIDE 6

6

Infrastructure Host Operating System Docker Engine

Binaries / Libraries Application

Container

Binaries / Libraries Application

Container

Binaries / Libraries Application

Container

What does that look like?

slide-7
SLIDE 7

7

Containers vs. Virtual Machines

Infrastructure Host Operating System Hypervisor

Bins/Libs App

Guest O/S

Bins/Libs App

Guest O/S

Bins/Libs App

Guest O/S

Infrastructure Host Operating System Docker Engine

Bins/Libs App Bins/Libs App Bins/Libs App

Virtual Machine Containers

slide-8
SLIDE 8

7

Containers vs. Virtual Machines

Infrastructure Host Operating System Docker Engine

Bins/Libs App Bins/Libs App Bins/Libs App

Virtual Machine Containers

slide-9
SLIDE 9

7

Containers vs. Virtual Machines

Infrastructure Host Operating System Docker Engine

Bins/Libs App Bins/Libs App Bins/Libs App

Virtual Machine Containers

Infrastructure Host Operating System Hypervisor

Guest Operating System Libraries and Binaries App App App

slide-10
SLIDE 10

8

As a Developer, how does this benefit me?

slide-11
SLIDE 11

Benefits of Containerization

  • Development environment consists of components
  • Components can be swapped as needed for different

clients / applications

  • If production environment is containerized, deployment is as

simple as dropping a completed application in a fully tested container on the production server

9

slide-12
SLIDE 12

10

Containers as components

Docker Engine

MySQL Container Client Data Container PHP 5.6 Container Client App Container v1 Apache Container

slide-13
SLIDE 13

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container PHP 5.6 Container Client App Container v1 Apache Container

slide-14
SLIDE 14

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container PHP 5.6 Container Client App Container v1 Apache Container

  • Reconfiguration is painless
slide-15
SLIDE 15

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container PHP 5.6 Container Client App Container v1

  • Reconfiguration is painless
slide-16
SLIDE 16

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container PHP 5.6 Container Client App Container v1

  • Reconfiguration is painless

NGinX Container

slide-17
SLIDE 17

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

NGinX Container

slide-18
SLIDE 18

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container NGinX Container

slide-19
SLIDE 19

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container

…Really painless

NGinX Container

slide-20
SLIDE 20

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Memcached Container

…Really painless

NGinX Container

slide-21
SLIDE 21

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container

…Really painless

NGinX Container

slide-22
SLIDE 22

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Redis Container

…Really painless

NGinX Container

slide-23
SLIDE 23

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Redis Container Varnish Container

…Really painless

NGinX Container

slide-24
SLIDE 24

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Redis Container Varnish Container Apache Solr Container

…Really painless

NGinX Container

slide-25
SLIDE 25

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Redis Container Varnish Container

…Really painless

NGinX Container

slide-26
SLIDE 26

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Redis Container Varnish Container ElasticSearch Container

…Really painless

NGinX Container

slide-27
SLIDE 27

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Selenium Container Redis Container Varnish Container ElasticSearch Container

…Really painless

NGinX Container

slide-28
SLIDE 28

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container Client App Container v1

  • Reconfiguration is painless

PHP 7.0 Container Selenium Container Redis Container Varnish Container ElasticSearch Container

…Really painless

  • Updates are simplified

NGinX Container

slide-29
SLIDE 29

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container

  • Reconfiguration is painless

PHP 7.0 Container Selenium Container Redis Container Varnish Container ElasticSearch Container

…Really painless

  • Updates are simplified

NGinX Container

slide-30
SLIDE 30

10

Containers as components

Docker Engine

MySQL Container

  • Applications are isolated

Client Data Container

  • Reconfiguration is painless

PHP 7.0 Container Selenium Container Redis Container Varnish Container ElasticSearch Container

…Really painless

  • Updates are simplified

Client App Container v2 NGinX Container

slide-31
SLIDE 31

Docker Stack Configuration (docker-compose)

version: '2'
 services:
 web:
 domainname: local.hptn.org
 hostname: local.hptn.org
 container_name: local.hptn.org
 ports:


  • '443:443'

  • '80:80'


environment:


  • RUN_AS_UID=1000

  • GH_TOKEN

  • IMGUR_API_KEY


image: savaslabs/hptn-web:1.6
 depends_on:


  • db

  • memcached


volumes:


  • ./docker/hptn-web/drupal:/conf

  • ./docker/hptn-web/php:/etc/php5


memcached:
 container_name: hptn_memcached
 image: memcached:1.4.21
 environment:


  • MEMCACHED_MEMORY_LIMIT=128


11

db:
 container_name: hptn_db
 image: mysql:5.5.47
 volumes:


  • ./docker/mysql:/etc/mysql/conf.d/

  • mysql-data:/var/lib/mysql


environment:
 MYSQL_DATABASE: 'hptn_docker'
 MYSQL_ROOT_PASSWORD: 'root'
 ports:


  • '33308:3306'


selenium:
 container_name: hptn_selenium
 image: selenium/standalone-firefox:2.53.0
 volumes:


  • /dev/shm:/dev/shm


volumes:
 mysql-data:
 driver: local

slide-32
SLIDE 32

How can I get started using Docker for development

  • Install the Docker Engine (Linux), Docker for Windows,
  • r Docker for Mac
  • Install Docker Compose (Linux)
  • Create a docker-compose.yml file with your stack

configuration

  • Execute docker-compose up -d

12

slide-33
SLIDE 33

Projects to jumpstart your development efforts

13

  • Docker For Drupal (docker4drupal.org)
  • Docker based development environment (drupal.org),

https://www.drupal.org/node/2736447

  • https://github.com/peperoni60/drupal-docker
  • Tons more on Github, pick your flavor
  • Docker Hub: https://hub.docker.com
  • Docker Sync (for OS X) (http://docker-sync.io/)
slide-34
SLIDE 34

14

Questions?