I'm building my first production SaaS application with a Turborepo monorepo and Next.js. I've heard that the frontend, backend, and database should all be containerized, ideally before development gets too far. However, I'm working on a Chromebook with only 4 GB of RAM, so running Docker locally isn't practical right now. Would it be reasonable to develop on bare metal for the time being and containerize the application closer to launch? What drawbacks should I expect, and would moving the existing setup into containers require major changes to the application code or development workflow?
4 Answers
You don’t necessarily need to replace your Chromebook. Treat it as a lightweight client and connect to a stronger remote development environment. A cloud-based workspace or a Linux virtual machine can provide the CPU, memory, and Docker support you need while you continue using the Chromebook for editing and access.
The best choice depends on where you plan to deploy. Some platforms run Next.js without requiring you to manage Docker at all, while others are built around container images. Decide on the deployment target first; if it doesn’t require containers, you may be adding unnecessary complexity.
If you’re not collaborating or deploying yet, waiting is reasonable. If you want containerized builds sooner, configure an automated build pipeline to create and publish the image remotely, so your Chromebook doesn’t have to run Docker locally. Getting closer to production early can reveal problems sooner, but it isn’t essential for every project.
Developing without containers is perfectly possible, especially if you’re working alone. Containerization later usually won’t require rewriting the application, but you may need to adjust configuration, environment variables, networking, file paths, and how services such as databases or Redis are started. Following Twelve-Factor principles from the beginning will make that transition much easier.

Starting with a Compose setup can still be helpful for a multi-service application because it gives the services predictable names and networking, but it isn’t mandatory during early development.