Docker project pitch


Docker project pitch

Deployment made painless

Rather than trying to fight all the difficulties of deployment through various tricks and programs, you can use Docker to ensure that your development and production environments are consistent.

What are potential roadblocks to using Docker?

  • Docker is a relatively new technology. It was first released in March 2013 and in June 2014, version 1.0 was released. Since it's only recently been "production-ready", Docker hasn't seen widespread adoption yet in the industry. This means documentation, and general community support still has room for growth.
  • Security issues, particularly around sharing a host OS with others. There are several recommendations to tighten the security from default settings, however these require a good understanding of Linux and may scare away developers with less experience in DevOps.
  • Unsure about how to apply an existing project to Docker. If you've already worked on developing a project, it can be challenging to figure out how to docker-ize a project. For example, should an entire MEAN stack be in one container? Or should there be one container for the DB and one container for the webserver?
  • Support for Docker across various IaaS/PaaS providers is relatively nascent. I'm not sure about others, but for Azure, support for Docker is relatively recent. For example, on Azure you can only setup a Docker via CLI and not through the web portal (which probably doesn't matter, because if you're not comfortable with CLI, you will find it quite challenging to use Docker anyhow).

Proposed Idea: DockerJS

Overview: Straight-forward generator to create minimal, connected containers for new and existing projects to simplify the deployment process.

Benefits: Enable you to deploy (painlessly) right away and do continuous deployment and integration with minimal initial work.

Ecosystem: Abstraction layer on top Docker for a specific type of developer (full-stack web developer / teams).

The solution is to provide a step-by-step method for web developers to take advantage of Docker quickly.

Steps:

  1. Choose what your stack will be
  2. Create containers based on the stack selection (will likely create at least two containers)
  3. Configure the containers to ensure a) the containers talk to each other and b) security
  4. Install the targeted portion of the stack along with dependencies
  5. Create containers on the cloud platform (e.g. Azure, AWS, Google Cloud) and link them to the containers on the local dev machine

The idea is that these containers generate very barebone footprint. It shouldn't seek to replace scaffolding generators such as Yeoman (which are oftentimes accused of being bloated). Instead it's to create the smallest scaffold that still demonstrates the container retains its functionality (e.g. a simple Hello World on an express server).

Then, if it's a new project, a developer can use a scaffolding generator if they want, or if it's an existing project, copy in existing code.

Yeoman-style generator that allows you to create Minimum Containers.

Initially, you can create a MEAN stack or more generally, whatever stack you want.

It creates several containers: 
1. Primary DB (e.g. MongoDB, mySQL) 
2. Secondary DB (e.g. Redis) 
3. Server DB (e.g. Node, Express + MVC front-end framework) 
4. Testing Framework 
5. Continuous Integration (if they're doing Jenkins)


views