phoenix servers with docker and nginx
DESCRIPTION
In this presentation we define the concept of Phoenix Servers, coined by Martin Fowler, and introduce Docker as a tool to achieve this idea.TRANSCRIPT
![Page 1: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/1.jpg)
Phoenix Serverswith docker
by Nils de moor - @ndemoor
PHPBenelux March Meetup
![Page 2: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/2.jpg)
Hello! I’m Nils De MoorCTO & cofounder at WooRank#mongo #ansible #aws #devops #dockerThat’s me!
![Page 3: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/3.jpg)
CLEAN SERVER
INSTALLCONFIG MGMT
AGENT(CHEF, PUPPET,
ANSIBLE, bash...)
COMPOSE SCRIPTS
& RUN AGENT
SERVER in
desired STATE
Change versionEdit config fileAdd/remove libraryCreate folder/link/.......
Script, Configure, Run, Repeat...
![Page 4: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/4.jpg)
PUSH CODE RUN TESTs BUILD
Push, Test, Build, Repeat...
![Page 5: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/5.jpg)
CLEAN SERVER
INSTALLCONFIG MGMT
AGENT(CHEF, PUPPET,
ANSIBLE, bash...)
COMPOSE SCRIPTS
& RUN AGENT
SERVER in
desired STATE
PUSH CODE RUN TESTs BUILD
Deploy!
![Page 6: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/6.jpg)
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATESERVER
in desired STATE
Development Test Production
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER in
desired STATE
SERVER
desired STATE
SERVER
desired STATEdesired STATEdesired STATE
![Page 7: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/7.jpg)
![Page 8: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/8.jpg)
A LIBRARY NEEDS TO BE DELETED
A library needs to be removed... entirely
![Page 9: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/9.jpg)
The config server goes down
![Page 10: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/10.jpg)
Package managers are unavailable
![Page 11: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/11.jpg)
System updates are “available”
![Page 12: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/12.jpg)
What if all of this happens...
![Page 13: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/13.jpg)
What if all of this happens...
...in production
![Page 14: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/14.jpg)
What if all of this happens...
...in production
...while scaling up for a traffic spike
![Page 15: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/15.jpg)
TEXT 1
TEXT 2Idempotence broken!
![Page 16: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/16.jpg)
“THE RESULT IS A UNIQUE SNOWFLAKE. GOOD FOR A SKI RESORT,
BAD FOR A DATA CENTER.”Martin Fowler
![Page 17: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/17.jpg)
“A SERVER SHOULD BE LIKE A PHOENIX, REGULARLY RISING FROM THE ASHES.”
Martin Fowler
![Page 18: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/18.jpg)
![Page 19: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/19.jpg)
![Page 20: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/20.jpg)
IsolationPortabilityCompatibilityAutomationSpeed
“Ship anything... anywhere”
![Page 21: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/21.jpg)
• LXC Containers• “Chroot on steroids”
• AUFS• layered view on merged directories• copy-on-write
What and how?
![Page 22: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/22.jpg)
![Page 23: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/23.jpg)
git clone https://github.com/ndemoor/phpbnl-demo
![Page 24: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/24.jpg)
# Dockerfile: memcached
FROM ubuntu
# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update
# install memcachedRUN apt-get install -y memcached
# run as user daemon (memcached doesn't allow to run as root)USER daemon
# expose memcached portEXPOSE 11211
# Launch memcached when launching the container# CMD [ "memcached" ]ENTRYPOINT ["memcached"]
![Page 25: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/25.jpg)
# Dockerfile: nginx and php
FROM ubuntu
# make sure the package repository is up to dateRUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.listRUN apt-get update
# install php and nginxRUN apt-get install php5-common php5-cli php5-fpm php5-memcache php5-mcrypt nginx
RUN echo "cgi.fix_pathinfo = 0;" >> /etc/php5/fpm/php.iniRUN echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80
![Page 26: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/26.jpg)
0.1
App
![Page 27: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/27.jpg)
# Pseudo-Dockerfile: app
FROM mynamespace/nginx-php
MAINTAINER myself
ADD . /var/wwwRUN cd /var/www && install
WORKDIR /var/www
EXPOSE 80
CMD [ "./start.sh" ]
![Page 28: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/28.jpg)
![Page 29: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/29.jpg)
0.1
0.2
?
App
App
![Page 30: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/30.jpg)
0.1
0.2
App
App
![Page 31: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/31.jpg)
0.1
0.2
App
App
![Page 32: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/32.jpg)
• Deis - deployment and orchestration• Dokku - deployment• Fig - deployment• Flynn - deployment and orchestration • Shipyard - monitoring
Community
![Page 33: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/33.jpg)
Thank
YOU!
![Page 34: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/34.jpg)
Thank
YOU!
Psst... we’re hiring
![Page 35: Phoenix Servers with Docker and Nginx](https://reader030.vdocuments.net/reader030/viewer/2022020105/5550d671b4c905e8318b5020/html5/thumbnails/35.jpg)
http://docs.docker.io
http://morethanadventure.com/wp-content/uploads/2013/12/What_if.jpg
http://1.bp.blogspot.com/-YPJ77li2P3o/T1O5y29ZO-I/AAAAAAAAFOo/tqRMI68FBns/s1600/Prof+Macksey%5B2%5D.jpg
http://www.pingzine.com/wp-content/uploads/2012/05/serverdown.jpg
http://www.abels.co.uk/wp-content/themes/abels/images/uploads/Storage/various%20005%20(2).jpg
http://www.murphyslawnyc.com/wp-content/themes/000edupress/images/logo.png
http://clipartist.info/clipart/xmas/snow/snowflake_stylized_XXL.png
http://www.dimensionsinfo.com/wp-content/uploads/2010/03/Freight-Container-sizes.jpg
http://www.swarthmore.edu/Images/administration/thephoenix/phoenix_logo_2color.gif
http://labourlist.org/wp-content/uploads/2011/11/broken-chain.jpg
Photo Credit