Joomla Continuous Delivery with Docker

Post on 12-Jul-2015

1,940 views 5 download

Tags:

transcript

Joomla Continuous Deliverywith Docker

Jirayut Nimsaeng (Dear)

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

Release Build

Deploy Test

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

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

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

WhyContinuous Delivery?

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Classic Release

Requirement

Design

Implementation

Testing

Release

Waterfall

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Risk

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Release Frequently

Split your product

Optimize business value

$$$

$Split time

January April

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

WhyDocker?

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Developer Problems

Developer Local Test QA

Production

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

What Developer needs

Production-like Quick Repeatable

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

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

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

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

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

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

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

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

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

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

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

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

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

Jirayut NimsaengJoomla Continuous Delivery with Docker

December 14, 2014 @ C.P. Tower

Docker Use Cases● Docker for Continuous Delivery

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