Using Docker for Local Development: A Practical Guide

Docker has become an essential tool for local development, allowing you to create consistent environments that mirror production. Instead of installing dependencies directly on your host machine, you can containerize your app and its services, making setup fast and reliable.

In this guide, you’ll learn how to set up Docker for a typical project, manage services with Docker Compose, and keep your workflow efficient. Whether you’re working on a small API or a full-stack app, these steps will get you up and running.

Article illustration

1. Create a Dockerfile for Your Application

Start by adding a Dockerfile to your project root. This file defines the runtime, dependencies, and startup command. For a Node.js app, it might look like:

  • Use a base image like node:18-alpine
  • Copy package.json and run npm install
  • Copy the rest of the code and set the default command

2. Use Docker Compose for Multi-Service Setup

Docker Compose lets you define and run multiple containers with a single YAML file. Create a docker-compose.yml to link your app with databases, caches, or message brokers.

  • Define services under the services key
  • Map ports like 3000:3000 to access your app locally
  • Use volumes to enable live-reload during development

3. Manage Dependencies and Persist Data

For local development, you need your container to stay in sync with your code. Use bind mounts to share code between your host and container. For databases, use named volumes to persist data even after containers are removed.

4. Run and Debug Your Environment

Start everything with docker compose up. To debug, attach to running containers with docker exec -it <container_id> sh. Rebuild images with docker compose build whenever you change dependencies.

Docker streamlines local development by eliminating “works on my machine” problems. Once your setup is in place, onboarding new developers becomes as simple as running one command. Start small, and expand as your project grows.

sarah antaboga
Author: sarah antaboga

Leave a Reply

Your email address will not be published. Required fields are marked *