docker for development getting started
play

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


  1. Docker for Development: Getting Started Lisa H. Ridley Savas Labs DrupalCamp Chattanooga November 5, 2016

  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

  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 0 3

  4. What is Docker? • Automates the deployment of applications in software containers • Operating system abstraction layer • Open Source Project (May 2013) 4

  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 5

  6. What does that look like? Container Container Container Application Application Application Binaries / Libraries Binaries / Libraries Binaries / Libraries Docker Engine Host Operating System Infrastructure 6

  7. Containers vs. Virtual Machines App App App App App App Bins/Libs Bins/Libs Bins/Libs Bins/Libs Bins/Libs Bins/Libs Guest O/S Guest O/S Guest O/S Docker Engine Hypervisor Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7

  8. Containers vs. Virtual Machines App App App Bins/Libs Bins/Libs Bins/Libs Docker Engine Host Operating System Infrastructure Virtual Machine Containers 7

  9. Containers vs. Virtual Machines App App App App App App Libraries and Binaries Bins/Libs Bins/Libs Bins/Libs Guest Operating System Docker Engine Hypervisor Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7

  10. As a Developer, how does this benefit me? 8

  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

  12. Containers as components Apache Client App Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10

  13. Containers as components • Applications are isolated Apache Client App Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10

  14. Containers as components • Applications are isolated Apache Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10

  15. Containers as components • Applications are isolated Client App Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10

  16. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10

  17. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container Docker Engine 10

  18. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 7.0 Container Docker Engine 10

  19. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Container Docker Engine 10

  20. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container Memcached PHP 7.0 Container Container Docker Engine 10

  21. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Container Docker Engine 10

  22. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Docker Engine 10

  23. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Container Docker Engine 10

  24. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Apache Solr Container Container Docker Engine 10

  25. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Container Docker Engine 10

  26. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish ElasticSearch Container Container Docker Engine 10

  27. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10

  28. Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10

  29. Containers as components • Applications are isolated NGinX Container • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10

  30. Containers as components • Applications are isolated NGinX Client App Container Container v2 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10

  31. Docker Stack Configuration (docker-compose) version: '2' 
 services: 
 web: 
 db: 
 domainname: local.hptn.org 
 container_name: hptn_db 
 hostname: local.hptn.org 
 image: mysql:5.5.47 
 container_name: local.hptn.org 
 volumes: 
 ports: 
 - ./docker/mysql:/etc/mysql/conf.d/ 
 - '443:443' 
 - mysql-data:/var/lib/mysql 
 - '80:80' 
 environment: 
 environment: 
 MYSQL_DATABASE: 'hptn_docker' 
 - RUN_AS_UID=1000 
 MYSQL_ROOT_PASSWORD: 'root' 
 - GH_TOKEN 
 - IMGUR_API_KEY 
 ports: 
 image: savaslabs/hptn-web:1.6 
 - '33308:3306' 
 depends_on: 
 selenium: 
 - db 
 container_name: hptn_selenium 
 - memcached 
 image: selenium/standalone-firefox:2.53.0 
 volumes: 
 volumes: 
 - ./docker/hptn-web/drupal:/conf 
 - /dev/shm:/dev/shm 
 - ./docker/hptn-web/php:/etc/php5 
 volumes: 
 memcached: 
 mysql-data: 
 container_name: hptn_memcached 
 driver: local image: memcached:1.4.21 
 environment: 
 - MEMCACHED_MEMORY_LIMIT=128 
 11

  32. How can I get started using Docker for development • Install the Docker Engine (Linux), Docker for Windows, or Docker for Mac • Install Docker Compose (Linux) • Create a docker-compose.yml file with your stack configuration • Execute docker-compose up -d 12

  33. Projects to jumpstart your development efforts • 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/) 13

  34. Questions? 14

Recommend


More recommend