As your application gains traction, you're considering scaling it using Docker and Kubernetes. However, when searching for Docker images, you often encounter an overwhelming number of options or struggle to find the appropriate one. Even when you do find a suitable image, it doesn't align with your local environment.
Our struggles with containers at Jetpack.io
Recently, our website nearly went down because of a Node.js version mismatch between production and development environments. At Jetpack, we develop front-end projects and web apps locally and deploy them to Kubernetes using Docker containers. During deployment, a babel plugin error occurred. We discovered that the Node-16:alpine image silently upgraded Node.js from version 16.16 to 16.17. Consequently, we now have a mismatched Node.js version between our local development environments and the Docker containers.
We created Devbox to build Docker images from scratch
To address the above pain points, we developed Devbox, which constructs Docker images from scratch. With Devbox, compatibility issues with the base image are eliminated, as it includes the precise dependencies required for running your applications. Just use "devbox generate dockerfile" to automatically generate a Dockerfile for your Devbox project.
Devbox matches local shell environments to production
Devbox utilizes the Nix package manager to create a Nix shell for local development or a Docker image for remote deployments. It eliminates the need for running a Docker container locally, as Devbox shares the same package and dependencies in both the shell and container. Read more on Devbox and Docker comparison for local development.
How are we planning to use Devbox at Jetpack.io?
In the upcoming weeks, we'll adopt Devbox as our primary development environment and integrate it into the GitHub CI/CD production pipeline across all our repositories. Our aim is to leverage Devbox to achieve faster and more dependable dev and prod environments for our entire infrastructure.