Docker Generator - Revised Idea

After pitching this idea to my classmates at Hack Reactor, I've received some helpful feedback on the Docker Generator.

Summary:

Docker Generator enables developers to quickly setup containers for a new or existing project in their development and production environments.

The goal: make deployment simple and painless.

Considerations:

  • There are already a handful of open-source projects that use Docker containers to create a PaaS (e.g. Heroku) to simplify deployment
  • Consensus that SOA (service-oriented architecture) is a good design pattern for many cloud-native applications as it scales well
  • Spinning up Docker containers and deploying them the first time can take significant effort (learning Docker CLI commands, configuring the containers to ensure security, running Docker on a Linux-OS VM using Vagrant, etc)

Ideas:

  • Focus on a simple, interactive command line interface that allows developers to pick basic settings, choose the number of containers to spin up, and deploy it to a cloud provider
  • Decoupling the tech stack with the deployment script used. One of the issues with Yeoman generators is that they typically include easy one-command deployment for a couple cloud providers (whichever are the author's favorites). This means that if you use another cloud provider, it can be quite challenging to initially deploy the scaffold. Since a container by definition abstracts its innerworkings, it should be the same to deploy any container
  • Base container images - These are basic starting points for various services (e.g. express server, mongodb, redis) that will be used
    • Many of these container images likely already exist on Docker Hub or another image registry. If we can vet the quality (e.g. works and is secure), then we source these in the CLI utility
    • One challenge will be connecting the various images together
    • There may be one container that acts as the master / controller node and coordinates the other nodes (need to research further)
  • Deployment plugins - Simple shell scripts (or use a tool like Ansible) that are configured specifically for various cloud providers
    • Big 3: AWS, Azure, Google Cloud
    • Others: Heroku, Digital Ocean, Red Hat, etc
  • Fitting into the Docker / container ecosystem: Use well-established tools such as Ansible, CoreOS, Vagrant, and VirtualBox.
views