Docker-Compose

Docker-Compose

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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    34 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us