Upload
fabian-kromer
View
415
Download
2
Embed Size (px)
Citation preview
Meteor - DockerThe Good, the Bad & the Awesome
...Studied SE at TU Vienna
Worked 2 years in Silicon Valley
About me
Not a Docker Expert!
What is Docker?
Build, Ship, RunAn open platform for distributed applications for developers and sysadmins
Server
Host OS
Hypervisor
Guest OS
Guest OS
Guest OS
Bin/Libs
Bin/Libs
Bin/Libs
App A App A’ App B
Host OS
Server
Bins/Libs Bins/Libs
Container E
ngine
App A
App A
’
App B
App B
’
App B
’ VMContainer
The goodMeteor is ready for Docker!
There is a Docker image!https://github.com/meteorhacks/meteord
Build server App Servers
Dev Environment
Sourcecode
Tarball
Tarball
my current setup
Git + Meteorfully automated process
post-receive hookmeteor build
scp + ssh
CoreOSLightweight LinuxShips with Docker
Uses SystemdUpdates automatically
The “Bad”One Process per Container
nginxis NOT ready for Docker
.. but it works for basic scenariosit’s better to use haproxy instead
MongoDBgreat Docker support
but does not support OPLOG out of the box→ you need to write your own Dockerfile to
make this work!
Networking is a bitchadditional layer
container doesn’t know about host network...
App Monitoringcan be tricky, but there are options:
Kadira, Logentries, ...
Service MonitoringI created a Docker image for that:
kromit/systemd_monhttps://github.com/faburem/systemd_mon/tree/Docker-image
(Pull request pending)
Continuous Integration
0 downtime Deployment
Rebuild Docker Image
Run temporary instance of current
Image
Run instance of new image
Stop main instance
Docker Host(CoreOS)
Stop temporary instance
Scaling is fun*docker run image/name
* configuring nginx not so much
Questions?
faburem Fabian Kromer @faburem
var promise = new Promise(function(resolve, reject) { while (! codingFinished){ // finish coding } if (/* everything turned out fine */) { resolve(/* sourceCode */); } else { reject(Error("Fail")); }});promise.then(function(result) { // make public release on Github}, function(err){console.log(err);});