Upload
leo-lorieri
View
425
Download
3
Embed Size (px)
DESCRIPTION
Docker Meetup São Paulo #3 @ Wayra Deis, a PaaS built with Docker ft. @rochacon
Citation preview
A PaaS built with Docker
Meetup #3 @Wayra18/Nov/2014
BE STRONG
flickr.com/gridview
Strong Philosophy:Shipping
(Portability)
flickr.com/wallyonwater54
Strong Philosophy:Distribution
Grabthar flickr.com/42311564@N00/
Strong Philosophy:Scalability
Samuel Mann flickr.com/21218849@N03/
Strong Philosophy:Twelve Factor
flickr.com/hannahtakespictures
● Rados Gateway○ REST Objects
(S3 e Swift)
● RBD○ Block Storage
● CephFS○ POSIX Sharing
Node 1 Node 2 Node 3 Node 4 Node 5
Fleet
Systemd Systemd Systemd Systemd Systemd
Etcd
Confd Confd Confd Confd Confd
Flannel
eth0 eth0 eth0 eth0 eth0
Fleet
● Fleet
Distributed“Services”
[Unit]
Description=deis-controllerRequires=deis-store-volume.serviceAfter=deis-store-volume.service
[Service]
EnvironmentFile=/etc/environmentTimeoutStartSec=20m
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker history $IMAGE >/dev/null || docker pull $IMAGE"ExecStartPre=/bin/sh -c "docker inspect deis-controller >/dev/null && docker rm -f deis-controller || true"
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker run --name deis-controller --rm -p 8000:8000 -e EXTERNAL_PORT=8000 -e HOST=$COREOS_PRIVATE_IPV4 -v /var/run/fleet.sock:/var/run/fleet.sock -v /var/lib/deis/store:/data $IMAGE"
ExecStopPost=-/usr/bin/docker rm -f deis-controller
Restart=on-failureRestartSec=5
[Install]WantedBy=multi-user.target
WWHD (What Would Heroku Do)
● Limitations
$ deisctl config platform \
set domain=mylocalpaas.com
$ deisctl install platform
$ deisctl start platform
● Installation
$ pip install deis
$ deis register http://mylocalpaas.com
$ deis keys:add
● Install client
● Simpler deploy
$ mkdir myapp ; cd myapp$ deis create myapp
$ deis pull rochacon/ifconfigmeCreating build... done, v2
$ curl myapp.mylocalpaas.com192.168.20.219
● Docker deploy
Instead of “docker build”
# create the app
$ deis create myapp
# push it
$ git push deis master
-----> Building Docker image
-----> Pushing image to private registry
-----> Launching...
done, myapp:v1 deployed to Deis
http://myapp.mylocalpaas.com
# use it
$ curl http://myapp.mylocalpaas.com
Hello
● Scale it
$ deis scale cmd=5
Scaling processes... but first, coffee!
..o
done in 25s
=== myapp Processes
--- cmd:
cmd.1 up (v13)
cmd.2 up (v13)
cmd.3 up (v13)
cmd.4 up (v13)
cmd.5 up (v13)
● Heroku App
Available Buildpacks:
● Ruby● Nodejs● Java● Gradle● Grails● Play● Python● Clojure● PHP● Go● Meteorite● Perl● Scala● Dart● Nginx● Apache
● using deis
deis config
● using deis
deis run ( runs in an ephemeral container!)
● using deis
deis limits
● using deis
deis releases / deis rollbacks
● using deis
deis logs
● using deis
deis domains
Thanks!
lorieri @againstty0
ft. @rochacon
flickr.com/time-to-look