
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 (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 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 What is Docker? • Automates the deployment of applications in software containers • Operating system abstraction layer • Open Source Project (May 2013) 4 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 What does that look like? Container Container Container Application Application Application Binaries / Libraries Binaries / Libraries Binaries / Libraries Docker Engine Host Operating System Infrastructure 6 Containers vs. Virtual Machines App App App App App Bins/Libs Bins/Libs Bins/Libs App Guest O/S Guest O/S Guest O/S Bins/Libs Bins/Libs Bins/Libs Hypervisor Docker Engine Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7 Containers vs. Virtual Machines App App App Bins/Libs Bins/Libs Bins/Libs Docker Engine Host Operating System Infrastructure Virtual Machine Containers 7 Containers vs. Virtual Machines App App App Libraries and Binaries App App App Guest Operating System Bins/Libs Bins/Libs Bins/Libs Hypervisor Docker Engine Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7 As a Developer, how does this benefit me? 8 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 Containers as components Apache Client App Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10 Containers as components Apache Client App • Applications are isolated Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10 Containers as components Apache Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10 Containers as components Client App • Applications are isolated Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 7.0 Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Memcached Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Varnish Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Varnish Apache Solr Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Varnish Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Varnish ElasticSearch Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10 Containers as components NGinX • Applications are isolated Container • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10 Containers as components NGinX Client App • Applications are isolated Container Container v2 • Reconfiguration is painless MySQL Client Data Container Container …Really painless PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10 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 ports: volumes: - '443:443' - ./docker/mysql:/etc/mysql/conf.d/ - '80:80' - mysql-data:/var/lib/mysql environment: environment: - RUN_AS_UID=1000 MYSQL_DATABASE: 'hptn_docker' - GH_TOKEN MYSQL_ROOT_PASSWORD: 'root' - 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 - ./docker/hptn-web/php:/etc/php5 - /dev/shm:/dev/shm memcached: volumes: container_name: hptn_memcached mysql-data: image: memcached:1.4.21 driver: local environment: - MEMCACHED_MEMORY_LIMIT=128 11 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 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 Questions? 14.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages34 Page
-
File Size-