Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker-Drupal meetup Palic 2017

Docker-Drupal meetup Palic 2017

This talk was given on Drupal Meetup in Subotica, Serbia on September 2, 2017.

This is revised and updated version of previous talks on Docker I held in Zagreb.

Mladen Đurić

September 02, 2017
Tweet

More Decks by Mladen Đurić

Other Decks in Programming

Transcript

  1. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 1
    September 2nd, 2017 @ Palić, Subotica, Serbia
    DOCKER DRIVEN DRUPAL DEVELOPMENT™

    View Slide

  2. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DOCKER DRIVEN

    DRUPAL DEVELOPMENT™
    ON LOCALHOST WITH DOCKER4DRUPAL
    2
    Mladen Đurić
    @MacMladen
    NEW, REVISED
    2.0

    View Slide

  3. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 3
    MLADEN ĐURIĆ
    a.k.a MacMladen
    $ whoami
    A very boring incompetent guy

    View Slide

  4. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    In 2005 I started playing with various web technologies tried WordPress
    but figured out it was (and still is) not flexible enough.
    So in 2007 I landed on Drupal 5 and decade later I still am
    4

    View Slide

  5. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 5
    As soon as I started learning to code I was so fascinated and wanted to
    share what I learned. I was hardly into secondary school when I organized
    first computer club and gave first BASIC course. It was around 1982.
    In 2017 I am starting a Professional Web Development School ]{oder.

    View Slide

  6. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    ASSUMPTION IS THE
    MOTHER OF ALL F**KUP
    ‘I no longer craziest developer. Lol.’
    6
    *Popular enthusiast rocket developer

    View Slide

  7. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    INTRODUCE YOURSELF!
    7
    • Your OS? (Linux, Mac, Windows)
    • Your field? (front-end, back-end, DevOps)
    • Knowledge about Linux, networking, storage, VPS?
    • Docker anyone?

    View Slide

  8. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TIMETABLE:
    1. The Problem ~1 min
    2. The Virtualization ~1 min
    3. The Docker ~1 min
    4. The Practice ~1 min
    5. The Solution ~6 min
    6. The Myth ~2 min
    7. The Orchestration ~1 min
    8. The Service ~1 min
    9. The Conclusion ~1 min
    10. Q & A 10++ min
    8

    View Slide

  9. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 1.
    THE PROBLEM
    9

    View Slide

  10. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    …IS IT JUST ONE?!
    1. System setup — for development
    2. Project setup — matching production
    3. Quick fix of the old one — matching what was
    4. Project setup — for a colleague
    5. Project weirdos — matching production
    6. Project requirements — one is 5.3 other 5.6, and 7.1…
    7. System upgrade — what the !#$%&%$ happened to ___
    8. Testing — would that work under…
    9. Archiving — I know what I did last summer but before that..!?
    10

    View Slide

  11. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    SYSTEM SETUP
    Everyone who has done this knows how many settings and
    installing have to be done to set a new system up! Because it is
    something you do not want to do you delay even when you have
    brand new laptop waiting so be set up (just I have to ____ and then…)
    • Setting up new system
    • Buying new computer
    • (finally!) Installing clean system from scratch
    • Recovering from some disaster
    11

    View Slide

  12. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    PROJECT SETUP (@SELF CASE)
    12
    Rarely anyone works on one project at time, so we have to set
    up our system for each new project. Sometimes that includes
    specifics*, but mostly we have to deal with same old…
    • Setting up new local domain
    • Set up new local virtual host
    • Set up new database
    • (of course, you have to clean that up, archive once it is
    finished)

    View Slide

  13. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    QUICK FIX
    13
    Now client wants you to fix that new layout issue (or API change)
    so they expect you just to “open” the project and fix that (half hour
    work, right?), but since you archived it you have to set it up (again):
    • Setting up (again) local domain
    • Set up (again) local virtual host
    • Set up (again!) database
    • (of course, you have to clean that up again, archive once it is
    finished)

    View Slide

  14. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    PROJECT SETUP (COLLEAGUE CASE)
    14
    Like the clients are not enough, your boss asks you to help
    new, young colleague to set project just like you did for
    yourself (and also, set the whole system so it matches
    company workflow (you’ve done that last week so “just
    repeat”):
    • Setting up (again!) local domain
    • Set up (again!) local virtual host
    • Set up (again!) database

    View Slide

  15. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    PROJECT WEIRDOS
    15
    You do remember that old but reliable server that runs PHP 5.3,
    right? Well, we have to fix something but it fails to run under your
    new PHP 5.6?
    • Find instructions how to have multiple PHP’s on your system
    • Rape your web server with different setup (oh, did we mention that
    due to differences between Apache 2.2 and 2.4 that configuration
    will not work?)
    • You finally managed to set nginx to work and now you have to
    $ service stop and install apache and then revert, clean,
    hoping it will not return for a quick fix*.

    View Slide

  16. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    PROJECT REQUIREMENTS
    16
    You survived so far, congratulations! But what about that solr
    search they need so you have to match it? But, but… you just
    hardly managed to set up latest solr 6.0 how can you now
    revert to 1.4?! And solr is sooo out now, elastic is the
    new thing!
    • Find instructions how to have multiple solr’s on your system
    • Rape your config once again hoping it will run somehow (ha!)
    • Client dumps lately everything due to new in (external
    service).

    View Slide

  17. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    SYSTEM UPGRADE
    17
    Now severely sedated on latest and greatest happy pills, you machine is
    operational with some strange services running (or not) but churring along.
    • At 03:44 after final commit, you select shut down and just press ENTER,
    ENTER only to realize you approved upgrade. Well, OK they know what
    they are doing, right?
    • Tomorrow you find that system upgrade included latest version of server
    that somewhat changed configuration files so… well, system is just not
    working?
    NOW?! (reaching for ultra-strong pills you know you have…
    somewhere…)

    View Slide

  18. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TESTING
    18
    You restored your sanity (and got your liability clearance from
    your new psychiatrist which is excellent, btw), so client comes
    up with brand new idea:
    • If we sign up for new hosting, we were told that PHP 7 is the
    thing so your site will work? (no reason not to, right?)
    • …and have you heard about HHVM? Our sister company site
    runs on that like 10 time faster (probably more)
    …ommmmmm, in your mind while you take care of your Zen
    garden…

    View Slide

  19. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    ARCHIVING
    19
    • You have your code in git.
    • You can have your configuration in git.
    • You can have your database in git
    • …so how about having your server configuration also in git?
    — Available for colleagues to git clone from?
    — Available for DevOps to pull from staging? Production?
    — …is that even possible!?

    View Slide

  20. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 2.
    THE VIRTUALIZATION
    20

    View Slide

  21. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TYPES OF VIRTUALIZATION
    1. Full virtualization
    2. Hypervisor virtualization
    3. Containers (isolation)
    21

    View Slide

  22. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    NO VIRTUALIZATION ARCHITECTURE
    22
    YOUR LOCAL MACHINE (LAPTOP, DESKTOP)
    OPERATING SYSTEM (WIN, MAC, LINUX)
    SYSTEM WIDE BIN/LIB/SERVICE (WEB, DB, ETC)
    APP 1 APP 3
    APP 2 APP 4

    View Slide

  23. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    NO VIRTUALIZATION
    While it is not completely impossible to have multiple services coexist it is hard
    to reliably switch between them, comfortably. Looks like “natural” way to do
    anything, like any other service on host.
    BENEFIT:
    • It may look like an easy way to start or for undemanding development (if such
    exists ;)
    • Overhead is next to none
    DRAWBACK:
    • Everything stated under previous chapter, The Problem
    • Every change is very sensitive as it affects multiple projects in progress
    • Still requires knowledge and skill to set up and maintain properly
    23

    View Slide

  24. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    FULL VIRTUALIZATION ARCHITECTURE
    24
    INFRASTRUCTURE
    HOST OPERATING SYSTEM
    BIN/LIB
    VM ENGINE
    APP 1 APP 2
    GUEST OS
    BIN/LIB
    APP 3
    GUEST OS
    BIN/LIB
    APP 4

    View Slide

  25. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    FULL VIRTUALIZATION
    Almost as a physical machine, runs whatever, hardware is virtualized and
    accessible to all virtual machines like video card (graphics output) and other
    devices just like they are “native”.
    From the application perspective it is the same as running on native machine.
    BENEFIT:
    • Sometimes it is the only way to go (old processors and OS versions)
    DRAWBACK:
    • Runs in the same privilege ring as the host kernel, potential security issue
    • Has the most performance hit.
    • Uses most resources
    25

    View Slide

  26. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    FULL VIRTUALIZATION PROVIDERS
    26

    View Slide

  27. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    HYPERVISOR ARCHITECTURE
    27
    APP 1 APP 2
    GUEST OS
    BIN/LIB
    GUEST OS
    BIN/LIB
    GUEST OS
    BIN/LIB
    APP 3
    GUEST OS
    BIN/LIB
    APP 4
    INFRASTRUCTURE
    HOST OPERATING SYSTEM
    HYPERVISOR

    View Slide

  28. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    HYPERVISOR VIRTUALIZATION
    28
    The most efficient way to run different OS but usually limits the abilities of virtual
    machines, e.g. running only raw applications without GUI.
    Hypervisor is under host kernel control which provides “cleaner” relationship to
    host resources.
    BENEFIT:
    • Lighter than full virtualization still offers flexibility for virtual machines.
    • Usually provides guaranteed resources (CPU, memory) which is important when
    buying VPS from providers.
    DRAWBACK:
    • Has some performance hit but much lesser than full virtualization
    • Uses resources for guest kernel

    View Slide

  29. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 29
    HYPERVISOR TYPES

    View Slide

  30. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    CONTAINERIZATION
    30
    APP 1 APP 2
    BIN/LIB
    BIN/LIB
    BIN/LIB
    APP 3
    BIN/LIB
    APP 4
    INFRASTRUCTURE
    HOST OPERATING SYSTEM
    DOCKER ENGINE

    View Slide

  31. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    CONTAINERS
    The most efficient way to run isolated applications on host or cloud. Containers enable the
    best possible way to isolate just like virtual machines while they do not carry the overhead.
    Containers run in user space so they are just like multiple users running on one system
    (hello mainframes* :) )
    BENEFIT:
    • The lightest control mechanism with less than 5% overhead.
    • Resources (CPU, memory) can have granular control if needed
    • Resources are best utilized as they stretch dynamically.
    • Are very easy and fast to spin up, shut down… and most important: orchestrate!
    DRAWBACK:
    • Has some learning curve but then again everything does
    31

    View Slide

  32. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    CONTAINERIZATION
    32

    View Slide

  33. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 3.
    THE DOCKER
    33

    View Slide

  34. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    INSTALLATION ON WINDOWS 10
    34

    View Slide

  35. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WINDOWS REQUIREMENTS
    Windows 10
    Hypervisor enabled (could clash with VirtualBox 4.x)
    Memory installed in PC

    4GB would need adjustment,

    8GB is decent,

    16GB is recommended
    For older Windows systems you have to use Docker toolbox
    and docker in virtual machine environment/provider
    (VirtualBox, VMWare, Parallels)
    35

    View Slide

  36. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    INSTALLATION ON MAC OS X 10.11
    36

    View Slide

  37. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    macOS REQUIREMENTS
    Mac 10.11 or newer and i3/i5/i7 processor (machine from
    2010 or newer)
    Memory installed in Mac:

    4GB would hardly start anything,

    8GB is decent

    16GB is recommended
    For older OS X systems you have to use Docker toolbox
    and docker in virtual machine environment/provider
    (VirtualBox, VMWare, Parallels)
    37

    View Slide

  38. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    INSTALLATION ON LINUX
    Docker Engine is natively supported on Linux.
    $ wget -qO- https://get.docker.com/ | sh

    $ docker --version

    Docker is treated like any other services.
    $ sudo service docker status

    $ sudo service docker stop

    $ sudo service docker start

    $ sudo service docker restart
    38

    View Slide

  39. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    LINUX REQUIREMENTS
    Kernel 4.4+ preferred for CPU, memory and resource control.
    After 4.8 aufs is deprecated, overlay2 should be used.
    CAVEAT:
    — Processes and users in containers are those of container!
    Owner and group are identified by number, not by name!
    — Container daemon is run by root, we need to add user to
    docker group and make permissions group writable so user
    can control docker daemon and containers.
    39

    View Slide

  40. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    NOW IT IS THE SAME*
    FOR ALL PLATFORMS
    * …well, almost.
    — Unlike Windows and Mac, there is no hypervisor in Linux so it is running isolated
    services and your application with the least overhead.
    — Mac filesystem is HFS. Windows filesystem is NTFS. Linux filesystem may have
    many formats, usually EXT4.
    — Docker uses UnionFS to overlay (integrate) local filesystem with changes
    (additions) from local filesystem.
    — There could be different problems with ownership/permissions across platforms
    40

    View Slide

  41. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DOCKER VOCABULARY
    — docker machine
    — docker toolbox
    — docker engine
    — docker cloud
    — docker swarm
    — docker
    — docker-compose
    — docker registry
    — docker store
    41

    View Slide

  42. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    docker
    Starting docker container
    sudo docker \

    run -d \

    -p 8080:80 \

    --name apache \

    --link mysql:mysql \

    -v /var/www/html:/var/www/html \

    jessecascio/local:apache

    verify the two containers are running, and link exists
    sudo docker ps

    sudo docker inspect -f "{{ .HostConfig.Links }}" apache
    42

    View Slide

  43. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    HTTPS://HUB.DOCKER.COM/
    43

    View Slide

  44. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    docker COMMANDS
    Docker controls individual containers by name or ID.
    Usual Docker commands:
    $ docker ps -a — lists all docker containers, running, paused
    and stopped.
    $ docker inspect mcidev_nginx_1 — lists all details about
    the container by name or ID
    $ docker stats --no-stream — shows resource usage,
    omit --no-stream to have live stats
    44

    View Slide

  45. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    docker-compose
    # Drupal with PostgreSQL
    #
    # Access via "http://localhost:8080"
    # (or "http://$(docker-machine ip):8080"
    # if using docker-machine)
    # During initial Drupal setup,
    # Database type: PostgreSQL
    # Database name: postgres
    # Database username: postgres
    # Database password: example
    # ADVANCED OPTIONS; Database host: postgres
    version: '2'
    services:
    drupal:
    image: drupal:8.3-apache
    restart: unless-stopped
    ports:
    - 8080:80
    volumes:
    - /var/www/html/modules
    - /var/www/html/profiles
    - /var/www/html/themes
    # this takes advantage of the feature
    # in Docker that a new anonymous
    # volume (which is what we're creating
    # here) will be initialized with the
    # existing content of the image at the
    # same location
    - /var/www/html/sites
    postgres:
    image: postgres:9.6
    restart: unless-stopped
    environment:
    POSTGRES_PASSWORD: example
    The official docker-compose.yml for Drupal looks like this:
    45

    View Slide

  46. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    docker-compose COMMANDS
    docker-compose controls a group of containers, usually called application or
    stack.
    $ docker-compose up -d — while in directory structure containing docker-
    compose.yml, creates and starts application.
    $ docker-compose pull — fetch latest version of containers.
    $ docker-compose stop — stops application
    $ docker-compose start — starts application
    $ docker-compose restart — restarts application
    $ docker-compose down — remove containers (instance of contaners images)
    46

    View Slide

  47. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DOCKER BUILD — Dockerfile
    The Apache Dockerfile can look like this.
    FROM ubuntu:14.04

    RUN apt-get update

    RUN apt-get install -y apache2

    RUN apt-get install -y php5 php5-common php5-cli php5-
    mysql php5-curl


    COPY dev_vhost.conf /etc/apache2/sites-available/

    EXPOSE 80

    CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

    47

    View Slide

  48. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    ADVANCED DOCKER
    • Docker image
    • Docker storage
    • Docker networking
    • Docker scale
    48

    View Slide

  49. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 4.
    THE PRACTICE
    49

    View Slide

  50. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WHAT DO WE HAVE SO FAR?
    • Understanding what the Docker is
    • Knowledge how the Docker works
    • Basic docker and docker-compose
    commands
    • docker service running
    50

    View Slide

  51. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WHAT ELSE DO WE NEED?
    • docker-compose.yml start configuration
    • Basic directory structure for new projects
    • Replace port based container access with
    name resolving
    51

    View Slide

  52. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 5.
    THE SOLUTION
    52

    View Slide

  53. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    THE SOLUTION
    • One can always make own solution by
    combining official containers and configuring
    them properly (not an easy task)
    • Use ready made solutions (like ones listed
    next)
    • Use some customized combination
    53

    View Slide

  54. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WODBY DOCKER4DRUPAL
    54

    View Slide

  55. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DRUPALDOCKER
    55

    View Slide

  56. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DOCKSAL
    56

    View Slide

  57. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    JWILDER/NGINX-PROXY
    57

    View Slide

  58. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TRÆFIK
    58

    View Slide

  59. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    MCI-DRUPAL
    59
    NEW, REVISED
    2.0

    View Slide

  60. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    MCI-DRUPAL
    60
    • MCI-Drupal is a Docker based solution on
    Docker4Drupal for local Drupal development
    • It provides base not only for Drupal development
    but also a complete frontend gulp based task
    runner and gitflow based workflow
    • It is based on drush make for setup
    • Extensive documentation on setup and usage
    NEW, REVISED
    2.0

    View Slide

  61. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    MCI-DRUPAL
    61
    Prequisites:
    • Installed and operational Docker
    • dnsmasq or other name resolution for local
    domains so that names like project.loc 

    could be used
    • Proxy solution: provided configuration for traefik/
    portainer solution
    NEW, REVISED
    2.0

    View Slide

  62. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Recognize *.loc and *.dev domains on local machine
    (to avoid trashing /etc/hosts file) such as
    • http://traefik.loc
    • http://onboarding.dev.loc
    • dnsmasq is popular solution, on Ubuntu based
    distributions managed with NetworkManager
    LOCAL DOMAIN RESOLVING
    62
    NEW, REVISED
    2.0
    proxy
    domain for project

    View Slide

  63. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    JWilder is very simple solution but Traefik is more
    versatile.
    Rancher is complex system, maybe better suited for server,
    for local development Portainer could be used for simple
    monitoring. Both should be studied to discover which one
    suits you better.
    MCI-Drupal provides docker-compose.yml which
    configures both for our local use. All you have to do is to
    start them once, they will persist and restart with system.
    TRÆFIK & PORTAINER
    63
    NEW, REVISED
    2.0

    View Slide

  64. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Once started they provide many services for all
    projects (health monitoring, proxy, etc).
    All you have to do in order to have containers
    visible in browser is to add labels to containers
    in docker-compose.yml for your project.
    TRÆFIK & PORTAINER
    64
    NEW, REVISED
    2.0

    View Slide

  65. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TRÆFIK LABELS
    65
    NEW, REVISED
    2.0

    View Slide

  66. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    TRÆFIK & PORTAINER
    66
    NEW, REVISED
    2.0
    proxy
    proxy network
    træfik identification
    træfik identification
    træfik identification

    View Slide

  67. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 6.
    THE MYTH
    67

    View Slide

  68. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    FINALLY, SOMETHING THAT
    WORKS OUT OF THE BOX!
    68

    View Slide

  69. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    I CAN DO THIS EASILY!
    69

    View Slide

  70. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    SO NO ONE CAN DO THIS EASILY?
    70

    View Slide

  71. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 7.
    THE ORCHESTRATION
    71

    View Slide

  72. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WHAT IS ORCHESTRATION?
    72
    • One container is a service
    • Services are grouped as application stacks.
    • Stacks are then
    — load-balanced
    — scaled
    — health-checked
    — managed over infrastructure

    View Slide

  73. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    HOW ORCHESTRATION WORKS
    73

    View Slide

  74. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    ORCHESTRATION: RANCHER
    74

    View Slide

  75. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    RANCHER APPLICATION STACKS
    75

    View Slide

  76. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    RANCHER APPLICATION
    76

    View Slide

  77. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    RANCHER APPLICATION CONFIGURATION
    77

    View Slide

  78. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    DOCKER CLOUD
    78

    View Slide

  79. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    KUBERNETES
    79

    View Slide

  80. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    MESOS
    80

    View Slide

  81. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    RANCHER
    81

    View Slide

  82. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    PORTAINER
    82

    View Slide

  83. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 8.
    THE SERVICE
    83

    View Slide

  84. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 84
    IaaS

    View Slide

  85. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    HEROKU
    85

    View Slide

  86. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    AMAZON EC2 CONTAINER SERVICE
    86

    View Slide

  87. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    WODBY
    87

    View Slide

  88. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    AMAZEE.IO
    88

    View Slide

  89. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    AMAZEE — LAGOON
    89

    View Slide

  90. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Chapter 9.
    THE CONCLUSION
    90

    View Slide

  91. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    FUTURE?
    91
    • Docker future seems promising
    • Isolation works perfectly on Linux
    • Native docker for Mac and Windows is
    improving
    • Still a lot to learn
    • Production ready with many providers

    View Slide

  92. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    IDEAL WORKFLOW
    92
    • Spin up new project locally from template stack
    • Use git repository with some git workflow for
    development like gitflow
    • Establish webhook to catch merge to develop/stage/
    release/master
    • Deploy — build, test, notify
    • Enjoy — have a cup of coffee, tee or a game of darts

    View Slide

  93. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    Appendix A
    RESOURCES
    93

    View Slide

  94. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    READ THE DOCUMENTATION!
    94
    • All over this presentation, pictures are linked
    to their resources
    • Docker documentation is the source
    • Orchestration is the next level, master the
    docker itself first

    View Slide

  95. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02
    THANKS!
    95
    Mladen Đurić
    @MacMladen

    View Slide

  96. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 96
    Q & A
    Mladen Đurić
    @MacMladen

    View Slide

  97. @MacMladen Docker Driver Drupal Development™ v.6 2017-09-02 97

    View Slide