Slide 1

Slide 1 text

Dockerizing Development Eric Mann - Tozny

Slide 2

Slide 2 text

–Jeremy Felt WordPress, meet Vagrant

Slide 3

Slide 3 text

Varying Vagrant Vagrants What’s even better: it’s disposable!

Slide 4

Slide 4 text

Evolution Bundles the WordPress development suite Keeps up-to-date with PHP and MySQL changes Empowers simple, local development complete with unit testing, runtime debugging, and even production-style caching Continues to evolve with contributions!

Slide 5

Slide 5 text

Is it good enough?

Slide 6

Slide 6 text

The Production Problem How are new servers spun up? How does new code get to the server? What happens when things go wrong?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Docker Build applications inside lightweight, distributable containers Isolate key infrastructure components: Web server Application Database Easily distribute development environments to the team

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 12

Slide 12 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 13

Slide 13 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 14

Slide 14 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 15

Slide 15 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 16

Slide 16 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 17

Slide 17 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 18

Slide 18 text

Parallel PHP Versions docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.3-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.4-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.5-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:5.6-fpm docker run -d --restart=always --net=host -v /srv/www:/srv/www 10up/php:7.0-fpm

Slide 19

Slide 19 text

Map Application Ports upstream php { server localhost:9000; } 


Slide 20

Slide 20 text

Map Application Ports upstream php { server localhost:9000; } 
 upstream php53 { server localhost:9053; }

Slide 21

Slide 21 text

Update Nginx location / { index index.php; try_files $uri $uri/ /index.php?$args; fastcgi_param ... # Use the upstream for php5-fpm fastcgi_pass php; ... }

Slide 22

Slide 22 text

Update Nginx location / { index index.php; try_files $uri $uri/ /index.php?$args; fastcgi_param ... # Use the upstream for php5-fpm fastcgi_pass php56; ... }

Slide 23

Slide 23 text

Cool! But why?

Slide 24

Slide 24 text

Docker - Advantages Build applications inside lightweight, distributable containers Isolate key infrastructure components: Web server Application Database Easily distribute development environments to the team

Slide 25

Slide 25 text

Docker - Advantages Keep your applications from colliding with one another Isolate key infrastructure components: Web server Application Database Easily distribute development environments to the team

Slide 26

Slide 26 text

Docker - Advantages Keep your applications from colliding with one another Make everything a separate container: Web server Application Database Easily distribute development environments to the team

Slide 27

Slide 27 text

Docker - Advantages Keep your applications from colliding with one another Make everything a separate container: Nginx + Varnish + Let’s Encrypt Application Database Easily distribute development environments to the team

Slide 28

Slide 28 text

Docker - Advantages Keep your applications from colliding with one another Make everything a separate container: Nginx + Varnish + Let’s Encrypt PHP + WordPress/Drupal/Joomla/etc Database Easily distribute development environments to the team

Slide 29

Slide 29 text

Docker - Advantages Keep your applications from colliding with one another Make everything a separate container: Nginx + Varnish + Let’s Encrypt PHP + WordPress/Drupal/Joomla/etc MySQL or Percona or Maria or RDS Easily distribute development environments to the team

Slide 30

Slide 30 text

Docker - Advantages Keep your applications from colliding with one another Make everything a separate container: Nginx + Varnish + Let’s Encrypt PHP + WordPress/Drupal/Joomla/etc MySQL or Percona or Maria or RDS “Works on my machine” == “It works”

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Source: rancher.com

Slide 33

Slide 33 text

Questions?

Slide 34

Slide 34 text

Dockerizing Development Eric Mann - Tozny