Blog/Docker for Developers: From Zero to Production

Docker for Developers: From Zero to Production

Docker changed how we develop and deploy applications. No more "it works on my machine" problems. This guide covers the essentials every developer should know.

Your First Dockerfile

A Dockerfile is a recipe for building your container image:

FROM node:18-alpine

WORKDIR /app

# Copy package files first (better caching)
COPY package*.json ./
RUN npm ci --only=production

# Copy source code
COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

Docker Compose for Development

Use docker-compose.yml to run multiple services together:

version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development
      - DB_HOST=db
    depends_on:
      - db
      - redis

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: myapp
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:alpine

volumes:
  db_data:

Useful Commands

Commands you'll use daily:

# Build and run
docker-compose up --build

# Run in background
docker-compose up -d

# View logs
docker-compose logs -f app

# Execute command in container
docker-compose exec app sh

# Stop everything
docker-compose down

# Clean up unused images
docker system prune -a