Docker provides the ability to build and run containerized applications across all host operating systems.
The Docker documentation for installing Docker CE under Ubuntu is really fantastic. This guide aims to provide a very opinionated step-by-step setup to give most developers a straightforward installation for local dev work.
While you won’t get a package file from Docker directly, the Solus Project’s
eopkg command makes setting up Docker easy enough.
There are a couple aspects of Node.js that make using Docker for development somewhat difficult. The primary difficulties come from dependency differences based on environment and a long running server process during development.
When using Docker for development, it’s often necessary to bind mount directories from your host into your container. However, you’ll run into problems if your image contains files your host doesn’t (such as a node_modules directory). When that happens, you’ll need to get the files from your image into your host before you start your container with the mount.
At work we’re using Kubernetes with Docker for Mac on our local development environments—which has been amazing. However, devs often end up with dangling non-Kubernetes containers hanging around (from terminals being accidentally closed or VS Code reloads) keeping expensive Docker bind mounts around. This is a command I chained together to cleanup these extra containers without disturbing those in the Kubernetes deployment.
Onboarding new developers is time consuming and hard. Everyone has unique quirks on their machine from past software/configuration they’ve installed, removed, or overridden that makes creating consistent environment setup guides an absolute nightmare. This is how I overcame many of the issues—and you can too—by adopting Docker for development.