joomla continuous delivery with docker

25
Joomla Continuous Delivery with Docker Jirayut Nimsaeng (Dear) Joomla Day Bangkok, Thailand 2014 December 14, 2014 @ C.P. Tower Release Build Deploy Test

Upload: jirayut-nimsaeng

Post on 12-Jul-2015

1.941 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Joomla Continuous Delivery with Docker

Joomla Continuous Deliverywith Docker

Jirayut Nimsaeng (Dear)

Joomla Day Bangkok, Thailand 2014December 14, 2014 @ C.P. Tower

Release Build

Deploy Test

Page 2: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

#whoami● Jirayut Nimsaeng (Dear)● Infrastructure Team Lead

at Proteus Technologies● ScrumMaster● Interested in Cloud and

Open Source Technology● Working with Docker since

version 0.6

Page 3: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Experienced?● Develop and test on AppServ or XAMPP● Deploy with FileZilla● Git● Vagrant● Docker● Testing● Automated test● Automated deploy

Page 4: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

WhyContinuous Delivery?

Page 5: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Classic Release

Requirement

Design

Implementation

Testing

Release

Waterfall

Page 6: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Risk

Page 7: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Release Frequently

Split your product

Optimize business value

$$$

$Split time

January April

Page 8: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

WhyDocker?

Page 9: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Developer Problems

Developer Local Test QA

Production

Page 10: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

What Developer needs

Production-like Quick Repeatable

Page 11: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker can● Deploy reliably & consistently● Everything will be exactly the same

– Distros– Software versions– Library dependencies

● If it works locally, it will work everywhere

Page 12: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker can● Deploy efficiently

– Laptop can run 10-100 containers easily– Server can run 10-1000 containers

● Containers can run at native speeds– http://www.slideshare.net/BodenRussell/kvm-and-

docker-lxc-benchmarking-with-openstack

Page 13: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker CPU benchmark

0

2

4

6

8

10

12

14

Docker / KVM: Compute Node Steady-State CPU (Segment Overlay)

docker-usrdocker-syskvm-usrkvm-sys

Time: KVM(95s - 307s) Docker(31s – 243s)

CPU Usage In Percent

Docker Averages

– 0.2

– 0.03

KVM Averages

– 1.91

– 0.36

Page 14: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker Memory benchmark

0.00E+00

1.00E+09

2.00E+09

3.00E+09

4.00E+09

5.00E+09

6.00E+09

7.00E+09

Docker / KVM: Compute Node Used Memory (Overlay)

kvmdocker

Axis Title

Memory Used

Page 15: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker Memory benchmark

MEMCPY DUMB MCBLOCK0

2000

4000

6000

8000

10000

12000

14000

3823.34393.3

12881.61

3813.38

4395.92

12905.68

3428.95 3461.59

7223.23

Memory Benchmark Performance

Bare Metal (MiB/s)docker (MiB/s)KVM (MiB/s)

Memory Test

MiB/s

Page 16: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker I/O benchmark

1 2 4 8 16 32 640

200

400

600

800

1000

1200

1400

1600

Sysbench Synchronous File I/O Random Read/Write @ R/W Ratio of 1.50

dockerKVM

Threads

Total Transferred In Kb/sec

Page 17: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

What is Docker?● Platform to help code, test and deploy

applications● Combine with

– Lightweight container virtualization– Work flows– Tooling

Page 18: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Containers vs. VMs

Server

Host OS

Hypervisor

GuestOS

GuestOS

GuestOS

Bins/Libs

AppA1

Bins/Libs

AppB1

Bins/Libs

AppA2

VM

Server

Host OS

Bins/Libs Bins/Libs

App A

1

App A

2

App B

1

App B

2

App B

3

Docker daem

o n

Container

Containers are isolated,but share OS and, whereappropriate, bins/libraries

Page 19: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Dockerfile● Dockerfile is instructions to build Docker image

– How to run commands– Add files or directories– Create environment variables– What process to run when launching container

Page 20: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Sample DockerfileFROM ubuntu:14.04

MAINTAINER Jirayut Nimsaeng <w [at] winginfotech.net>

ADD build-files /build-files

RUN apt-get update

RUN apt-get install -y openssh-server vim tmux rsync byobu

RUN mkdir /var/run/sshd

RUN sed -i 's/required pam_loginuid.so/optional pam_loginuid.so/g' /etc/pam.d/sshd

CMD /start.sh

EXPOSE 22

Page 21: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker life cycle

App ADocker Container

DockerRegistry

PushCommit

Host

App A

1 Contai ner

Pull

Docker Engine

App A

2 Contai ner

App A

Image

App A

Image

UbuntuBase Docker

ApacheDocker Container

Apache + PHPDocker Image

Bins/Libs

Apache

Bins/Libs

Apache

ChangeCommit

App A

ΔΔ

Change

App A

Apache

Bins/Libs

App ADocker image

Page 22: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker workflows

DockerfileFor App A

Host 1 (Dev/Build Server)

Docker Engine

Image A

pp AIm

age App A

DockerRegistry

Host 2 (Container Server)

1.Build

2.Push

3.Pull

4.Run

Docker Engine

Image A

pp A

Contain er A

pp A P

rodu ction

Page 23: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker Use Cases● Docker as Development Environment

Host

Virtualbox VM

Docker DaemonSSH

20352022

22

Web Server

boot2docker-vm

80 1024+

Docker Containers

Database

2035

Hos

t-on

ly

80

80

Page 24: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker Use Cases● Docker for Continuous Delivery

Page 25: Joomla Continuous Delivery with Docker

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Continuous Delivery with DockerDockerRegistry

DBBackupServer

GitlabServer

Gitlab CIServer

Gitlab CI Runner

Docker Engine

Test/Prod Server

Docker Engine

MySQLDockerfile

JoomlaDockerfile

MyS

QL Im

ageM

ySQ

L Image

Joomla Im

ageJoom

la Image

Joomla C

ontainer

MyS

QL C

ontainer

1. Push Code

2. Trigger

3. Trigger

4. Get

5. Build5.1. Get

6. Push Joomla Docker Image

7. Build7.1. Import

8. Push MySQL Docker Image

9. Trigger

10. PullDocker Image

12. Acceptance Test3.5. Unit Test

11. Deploy