Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How NodeSource Uses Docker

Dan Shaw
February 19, 2016

How NodeSource Uses Docker

NodeSource builds a ton of Docker images for Node.js and our enterprise platform N|Solid. I share our experience building, testing and deploying these production-ready base images.

Dan Shaw

February 19, 2016
Tweet

More Decks by Dan Shaw

Other Decks in Technology

Transcript

  1. © 2016 NodeSource Why so angry, dshaw? 2 Dan Shaw

    CTO and Co-Founder of NodeSource. Node.js startup veteran: 
 Storify, Spreecast, Voxer, ClassDojo. Podcast host of NodeUp. Created NodeBots Day, NodeBots SF, SFNode, and EnterpriseJS. Before Node.js did large-scale contracting
 in Defense, Health Care and Education. 
 Primarily Java backend and JavaScript frontend.
  2. © 2016 NodeSource Confidential 3 NodeSource is the Enterprise Node.js

    company offering a suite of products and professional services explicitly focused on the needs of Enterprise users of Node.js.
  3. © 2016 NodeSource Confidential 4 Enterprise Has Unique Requirements •

    Stable, Predictable Technology Foundation • Greater Insight into Application Behavior • Improved Security Controls • 24x7 Production Support and Concerns • “Don’t lock me in!” • “Don’t break my code!” Node.js in the Enterprise
  4. © 2016 NodeSource Confidential Docker in the Enterprise 6 The

    vast majority of these enterprise companies are at some stage of a Docker strategy
  5. © 2016 NodeSource Confidential Docker at NodeSource 7 Docker at

    NodeSource • We run Docker infrastructure at scale • Early on identified the need to support legacy versions of Node.js running in Docker • Need a way to control which Node.js updates are automatically pulled into your Docker images
  6. © 2016 NodeSource Confidential Docker at NodeSource 9 Version Pinning

    • An image for every version of Node • A repo for our supported Operating Systems • Aliases for tracking major and minor releases, as well as named releases (argon) • Examples: • nodesource/jessie:0.10.30 • nodesource/centos7:argon
  7. © 2016 NodeSource Confidential Docker at NodeSource 10 The Challenge

    • We maintain hundreds of Docker Images designed with enterprise production use in mind • Each image is generated from a script and relies on network for installing Node and downloading dependencies • How can we ensure high levels of quality across all images? 100 200 300 400 500 600
  8. © 2016 NodeSource Confidential Docker at NodeSource 11 Why Docker

    is Awesome Docker generates LAYERED artifacts for EVERY build.
 
 Nearly every command in a Dockerfile generates a layer. Every layer has a unique identifier and these layers are ‘flattened’ at runtime to create the Docker Container’s filesystem. fdf6bfe25e0e 50e0eff96b21
  9. © 2016 NodeSource Confidential Docker at NodeSource 12 Running Tests

    with Docker We can take our layered artifact, and build our tests as layers on top of that artifact. If our tests successfully build, we know our artifact contains a stable enough environment for our tests to pass. fdf6bfe25e0e 50e0eff96b21 31eef4f70ddd 8c1e809aa12
  10. © 2016 NodeSource Confidential Docker at NodeSource 13 Ship the

    Image If our tests pass, we ship the base image to the registry. This means the image you pull from the Docker Registry is the same exact image that we ran our tests on. fdf6bfe25e0e 50e0eff96b21 31eef4f70ddd 8c1e809aa12
  11. © 2016 NodeSource Confidential Docker at NodeSource 14 Docker Testing

    • At NodeSource, we use an open source tool by Will Blankenship called Dante to power this workflow.
 Try it out: github.com/retrohacker/dante • For Docker tutorials, insight into our build process, and more, checkout our blog: nodesource.com/blog • Our N|Solid Docker Images:
 github.com/nodesource/docker-nsolid • Our Node Docker Images:
 github.com/nodesource/docker-node