To make environments consistent between dev, staging, and production I want to start moving towards using Docker for many of my projects.
I am aware that Cloud9’s default workspaces don’t support Docker. They are themselves running in a Docker container in non-privileged mode, so attempting to run Docker inside of one leads to a segmentation fault. However Cloud9 supports SSH workspaces, which can run Docker… But I run into one of two issues:
- All projects in one workspace: If I put all of my different websites, web apps, and other projects in a single workspace then it becomes difficult to manage, track, and even remember what projects I have. It’s easy to get wires crossed and I may attempt to make an update to one project but accidentally update another.
- All projects in their own workspace: If using an SSH workspace, this seems to imply that each workspace has its own VM. This causes costs to scale linearly with the number of projects. If spinning up a new project adds $10 per month to my hosting bill, I’m disincentivized to take on new work.
Is there an easy solution I’m missing? How am I supposed to do Docker-based development to ensure a consistent environment across all deployments of my app?