Slide 1

Slide 1 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 1 May 19-21, 2017 @ srce, Zagreb, Croatia DOCKER DRIVEN DRUPAL DEVELOPMENT™

Slide 2

Slide 2 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 THE THEORY OF EVERYTHING AND VERY BRIEFLY SOME MUSINGS ABOUT
 DOCKER IN WEB DEVELOPMENT Mladen Đurić @MacMladen 2

Slide 3

Slide 3 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 THE THEORY OF EVERYTHING 3 E=mc2

Slide 4

Slide 4 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 EINSTEIN'S QUEST FOR
 A UNIFIED THEORY 4 After having become famous for several brilliant breakthroughs in physics, including Brownian motion, the photoelectric effect, and the special and general theories of relativity, Albert Einstein spent the last thirty years of his life on a fruitless quest for a way to combine gravity and electromagnetism into a single elegant theory. Einstein was motivated by an intellectual need to unify the forces of nature. He felt very strongly that all of nature must be described by a single theory.

Slide 5

Slide 5 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 5

Slide 6

Slide 6 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 DOCKER DRIVEN
 DRUPAL DEVELOPMENT™ ON LOCALHOST & SERVER 6 Mladen Đurić @MacMladen

Slide 7

Slide 7 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 7 MLADEN ĐURIĆ a.k.a MacMladen $ whoami A very boring incompetent guy

Slide 8

Slide 8 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 I’m in IT since the age of mainframes, 8th year of UNIX epoch. 8

Slide 9

Slide 9 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 I started with Z80 assembly, 9

Slide 10

Slide 10 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 …went over 6502, 10

Slide 11

Slide 11 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 to 8086 (this is why Intel i7 is still called x86) 11

Slide 12

Slide 12 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Somewhere in between, there was an episode with BASIC but I really enjoyed hard core C 12

Slide 13

Slide 13 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 I was knee deep in DTP 1990-2005, gone to Mac in 1995 and never looked back. 13

Slide 14

Slide 14 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 14

Slide 15

Slide 15 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 15 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.

Slide 16

Slide 16 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 UNIX EPOCH ?! 16

Slide 17

Slide 17 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 UNIX EPOCH ?! 17 Time in seconds since January 1st, 1970. Unix time (also known as POSIX time or epoch time) is a system for describing instants in time, defined as the number of seconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970, minus the number of leap seconds that have taken place since then. What will happen on January 19, 2038? This talk started at 1.495.202.400

Slide 18

Slide 18 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 – Steve Jobs,
 Stanford, June 12, 2005 “Stay hungry. Stay foolish.” 18

Slide 19

Slide 19 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 19

Slide 20

Slide 20 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 INTRODUCE YOURSELF! 20 • Your OS? (Linux, Mac, Windows) • Your field? (front-end, back-end, DevOps) • Knowledge about networking, storage, VPS?

Slide 21

Slide 21 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 WHEN IN ROME,
 DO AS THE ROMANS DO ‘I no longer craziest developer. Lol.’ 21 *Popular enthusiast rocket developer

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 1. THE PROBLEM 23

Slide 24

Slide 24 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 …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..!? 24

Slide 25

Slide 25 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 25

Slide 26

Slide 26 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 PROJECT SETUP (@SELF CASE) 26 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)

Slide 27

Slide 27 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 QUICK FIX 27 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)

Slide 28

Slide 28 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 PROJECT SETUP (COLLEAGUE CASE) 28 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

Slide 29

Slide 29 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 PROJECT WEIRDOS 29 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*.

Slide 30

Slide 30 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 PROJECT REQUIREMENTS 30 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).

Slide 31

Slide 31 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 SYSTEM UPGRADE 31 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…)

Slide 32

Slide 32 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 TESTING 32 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…

Slide 33

Slide 33 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 ARCHIVING 33 • 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!?

Slide 34

Slide 34 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 2. THE VIRTUALIZATION 34

Slide 35

Slide 35 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 TYPES OF VIRTUALIZATION 1. Full virtualization 2. Hypervisor virtualization 3. Containers (isolation) 35

Slide 36

Slide 36 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 NO VIRTUALIZATION ARCHITECTURE 36 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

Slide 37

Slide 37 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 37

Slide 38

Slide 38 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 FULL VIRTUALIZATION ARCHITECTURE 38 INFRASTRUCTURE HOST OPERATING SYSTEM BIN/LIB VM ENGINE APP 1 APP 2 GUEST OS BIN/LIB APP 3 GUEST OS BIN/LIB APP 4

Slide 39

Slide 39 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 39

Slide 40

Slide 40 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 FULL VIRTUALIZATION PROVIDERS 40

Slide 41

Slide 41 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 HYPERVISOR ARCHITECTURE 41 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

Slide 42

Slide 42 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 HYPERVISOR VIRTUALIZATION 42 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

Slide 43

Slide 43 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 43 HYPERVISOR TYPES

Slide 44

Slide 44 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 CONTAINERIZATION 44 APP 1 APP 2 BIN/LIB BIN/LIB BIN/LIB APP 3 BIN/LIB APP 4 INFRASTRUCTURE HOST OPERATING SYSTEM DOCKER ENGINE

Slide 45

Slide 45 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 45

Slide 46

Slide 46 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 CONTAINERIZATION 46

Slide 47

Slide 47 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 3. THE DOCKER 47

Slide 48

Slide 48 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 INSTALLATION ON WINDOWS 10 48

Slide 49

Slide 49 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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) 49

Slide 50

Slide 50 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 INSTALLATION ON MAC OS X 10.11 50

Slide 51

Slide 51 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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) 51

Slide 52

Slide 52 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 52

Slide 53

Slide 53 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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. 53

Slide 54

Slide 54 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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. 54

Slide 55

Slide 55 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 DOCKER VOCABULARY — docker machine — docker toolbox — docker engine — docker cloud — docker swarm — docker — docker-compose — docker registry — docker store 55

Slide 56

Slide 56 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 56

Slide 57

Slide 57 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 HTTPS://HUB.DOCKER.COM/ 57

Slide 58

Slide 58 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 58

Slide 59

Slide 59 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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: 59

Slide 60

Slide 60 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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) 60

Slide 61

Slide 61 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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"]
 61

Slide 62

Slide 62 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 ADVANCED DOCKER • Docker image • Docker storage • Docker networking • Docker scale 62

Slide 63

Slide 63 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 4. THE PRACTICE 63

Slide 64

Slide 64 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 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 64

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 5. THE SOLUTION 66

Slide 67

Slide 67 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 WODBY DOCKER4DRUPAL 67

Slide 68

Slide 68 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 DRUPALDOCKER 68

Slide 69

Slide 69 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 DOCKSAL 69

Slide 70

Slide 70 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 JWILDER/NGINX-PROXY 70

Slide 71

Slide 71 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 TRAEFIK 71

Slide 72

Slide 72 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 MCI-DRUPAL 72

Slide 73

Slide 73 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 6. THE MYTH 73

Slide 74

Slide 74 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 FINALLY, SOMETHING THAT WORKS OUT OF THE BOX! 74

Slide 75

Slide 75 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 I CAN DO THIS EASILY! 75

Slide 76

Slide 76 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 SO NO ONE CAN DO THIS EASILY? 76

Slide 77

Slide 77 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 7. THE ORCHESTRATION 77

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 HOW ORCHESTRATION WORKS 79

Slide 80

Slide 80 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 ORCHESTRATION: RANCHER 80

Slide 81

Slide 81 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 RANCHER APPLICATION STACKS 81

Slide 82

Slide 82 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 RANCHER APPLICATION 82

Slide 83

Slide 83 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 RANCHER APPLICATION CONFIGURATION 83

Slide 84

Slide 84 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 DOCKER CLOUD 84

Slide 85

Slide 85 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 KUBERNETES 85

Slide 86

Slide 86 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 MESOS 86

Slide 87

Slide 87 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 RANCHER 87

Slide 88

Slide 88 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 8. THE SERVICE 88

Slide 89

Slide 89 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 89 IaaS

Slide 90

Slide 90 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 HEROKU 90

Slide 91

Slide 91 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 AMAZON EC2 CONTAINER SERVICE 91

Slide 92

Slide 92 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 WODBY 92

Slide 93

Slide 93 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 AMAZEE.IO 93

Slide 94

Slide 94 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Chapter 9. THE CONCLUSION 94

Slide 95

Slide 95 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 FUTURE? 95 • 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

Slide 96

Slide 96 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 IDEAL WORKFLOW 96 • 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

Slide 97

Slide 97 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 Appendix A RESOURCES 97

Slide 98

Slide 98 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 READ THE DOCUMENTATION! 98 • 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

Slide 99

Slide 99 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 THANKS! 99 Mladen Đurić @MacMladen

Slide 100

Slide 100 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 100 Q & A Mladen Đurić @MacMladen

Slide 101

Slide 101 text

@MacMladen Docker Driver Drupal Development™ v.5 2017-05-19 101