Slide 1

Slide 1 text

THE THEORY OF EVERYTHING AND VERY BRIEFLY ABOUT DOCKER IN 
 WORDPRESS DEVELOPMENT Mladen Đurić @macmladen 1 6. MeetUp Novi Sad 2017

Slide 2

Slide 2 text

Mladen Đurić @MacMladen 2 6. MeetUp Novi Sad 2017

Slide 3

Slide 3 text

DOCKER 4 WORDPRESS IN DEVELOPMENT & PRODUCTION Mladen Đurić @macmladen 3 6. MeetUp Novi Sad 2017

Slide 4

Slide 4 text

MLADEN ĐURIĆ a.k.a MacMladen • in IT since the time of mainframes, 8th year in UNIX epoch (that’s 1978). • started with Z80 assembly, went over 6502 to 8086 (1978-1990) • somewhere in between, there was an episode with BASIC but really enjoyed hard core C • was knee deep in DTP 1990-2000 • gone to Mac in 1995 and never looked back • 2005 started playing with web technologies with WPMU but figured out it is not flexible enough • 2007 landed on Drupal 4 6. MeetUp Novi Sad 2017

Slide 5

Slide 5 text

WPMU ?! Mladen Đurić @macmladen 5 6. MeetUp Novi Sad 2017

Slide 6

Slide 6 text

TIMETABLE: 1. The Problem ~5 min 2. The Virtualization ~5 min 3. The Docker ~10 min 4. The Solution ~10 min 5. Q & A: 10 min or more 6 6. MeetUp Novi Sad 2017

Slide 7

Slide 7 text

7 6. MeetUp Novi Sad 2017

Slide 8

Slide 8 text

8 WHEN IN ROME,
 DO AS THE ROMANS DO 6. MeetUp Novi Sad 2017 ‘I no longer craziest developer. Lol.’

Slide 9

Slide 9 text

Chapter 1. THE PROBLEM 9 6. MeetUp Novi Sad 2017

Slide 10

Slide 10 text

…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 6. MeetUp Novi Sad 2017

Slide 11

Slide 11 text

Chapter 2. THE VIRTUALIZATION 11 6. MeetUp Novi Sad 2017

Slide 12

Slide 12 text

TYPES OF VIRTUALIZATION 12 6. MeetUp Novi Sad 2017 Full virtualization almost as a physical machine Hypervisor runs different OSes Isolation runs OSes on same kernel

Slide 13

Slide 13 text

FULL VIRTUALIZATION 13 6. MeetUp Novi Sad 2017

Slide 14

Slide 14 text

HYPERVISOR 14 6. MeetUp Novi Sad 2017

Slide 15

Slide 15 text

CONTAINERIZATION 15 6. MeetUp Novi Sad 2017

Slide 16

Slide 16 text

CONTAINERIZATION 16 6. MeetUp Novi Sad 2017

Slide 17

Slide 17 text

CONTAINERIZATION 17 6. MeetUp Novi Sad 2017

Slide 18

Slide 18 text

Chapter 2. THE DOCKER 18 6. MeetUp Novi Sad 2017

Slide 19

Slide 19 text

INSTALLATION 19 Docker Engine is supported on Cloud, Linux. Windows and Mac OS have native docker application. wget -qO- https://get.docker.com/ | sh docker –version Docker is treated like other services. sudo service docker status
 sudo service docker start Test the installation using this code sudo docker run ubuntu:14.04 /bin/echo 'Hello world' 6. MeetUp Novi Sad 2017

Slide 20

Slide 20 text

INSTALLATION 20 6. MeetUp Novi Sad 2017

Slide 21

Slide 21 text

https://hub.docker.com/ 21 6. MeetUp Novi Sad 2017

Slide 22

Slide 22 text

docker 22 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 6. MeetUp Novi Sad 2017

Slide 23

Slide 23 text

Dockerfile 23 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 EXPOSE 80 CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 6. MeetUp Novi Sad 2017

Slide 24

Slide 24 text

docker-compose 24 version: '2'
 
 services:
 db:
 image: mysql:5.7
 volumes:
 - db_data:/var/lib/mysql
 restart: always
 environment:
 MYSQL_ROOT_PASSWORD: wordpress
 MYSQL_DATABASE: wordpress
 MYSQL_USER: wordpress
 MYSQL_PASSWORD: wordpress
 
 wordpress:
 depends_on:
 - db
 image: wordpress:latest
 ports:
 - "8000:80"
 restart: always
 environment:
 WORDPRESS_DB_HOST: db:3306
 WORDPRESS_DB_PASSWORD: wordpress
 volumes:
 db_data: 6. MeetUp Novi Sad 2017 The official docker-compose.yml for WordPress looks like this:

Slide 25

Slide 25 text

docker and docker-compose commands 25 6. MeetUp Novi Sad 2017 docker controls individual containers by name or ID while docker-compose controls a group of containers, usually called application or stack. 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 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)

Slide 26

Slide 26 text

Chapter 3. THE SOLUTION 26 6. MeetUp Novi Sad 2017

Slide 27

Slide 27 text

27 Mladen Đurić @macmladen Q & A DOCKER4WORDPRESS 6. MeetUp Novi Sad 2017

Slide 28

Slide 28 text

THANKS! DOCKER4WORDPRESS Mladen Đurić @macmladen 28 6. MeetUp Novi Sad 2017