Use Cases

Claude Code and Docker Integration Guide: Streamlining Container Development

Claude Code and Docker Integration Guide: Streamlining Container Development. A practical guide with code examples.

Accelerate Docker Development with Claude Code

Setting up Docker environments involves many configuration files, which can be challenging for beginners. With Claude Code, you can efficiently generate and optimize Dockerfiles and docker-compose.yml files.

Generating and Optimizing Dockerfiles

Generating Multi-Stage Builds

> Create a Dockerfile for a Node.js + TypeScript project.
> Requirements:
> - Use multi-stage builds to minimize the production image
> - Use pnpm
> - Configure health checks
> - Run as a non-root user
# Build stage
FROM node:20-slim AS builder
RUN corepack enable && corepack prepare pnpm@latest --activate
WORKDIR /app

COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build

# Production stage
FROM node:20-slim AS runner
RUN corepack enable && corepack prepare pnpm@latest --activate

RUN addgroup --system --gid 1001 appgroup && \
    adduser --system --uid 1001 appuser

WORKDIR /app

COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
COPY --from=builder --chown=appuser:appgroup /app/package.json ./
COPY --from=builder --chown=appuser:appgroup /app/pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile --prod

USER appuser

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
  CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1

EXPOSE 3000
CMD ["node", "dist/index.js"]

Generating docker-compose.yml

Build your entire development environment with docker-compose.

> Create a docker-compose.yml with the following services:
> - app: Node.js app (with hot reload)
> - db: PostgreSQL 16
> - redis: Redis 7
> - adminer: DB management UI
version: "3.9"

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - DATABASE_URL=postgresql://postgres:password@db:5432/myapp
      - REDIS_URL=redis://redis:6379
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started

  db:
    image: postgres:16-alpine
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  adminer:
    image: adminer
    ports:
      - "8080:8080"

volumes:
  postgres_data:

Optimizing Existing Dockerfiles

> Analyze the current Dockerfile and optimize it
> to reduce build time and image size.

Claude Code will suggest and implement improvements such as:

  • Optimizing layer caching (installing dependencies first)
  • Adding unnecessary files to .dockerignore
  • Converting to multi-stage builds
  • Switching to lighter base images

Debugging Inside Containers

> The app container started with docker-compose up is failing to start.
> Check the logs, identify the cause, and fix it.
# Example commands Claude Code would run
docker-compose logs app --tail 50
docker-compose exec app sh -c "node -e 'console.log(process.env.DATABASE_URL)'"

For general debugging techniques, also see the Complete Debugging Guide.

Using Docker in CI/CD

For patterns on integrating Docker image builds and pushes into CI/CD, see the CI/CD Pipeline Guide.

Adding Docker Rules to CLAUDE.md

## Docker Development Rules
- Use docker-compose up for development
- Run tests with docker-compose exec app npm test
- Use multi-stage builds for production Dockerfiles
- Configure .dockerignore properly

For how to write CLAUDE.md, see the Complete Guide to Writing CLAUDE.md.

Summary

The combination of Claude Code and Docker dramatically reduces the effort of setting up environments. From generating Dockerfiles, configuring docker-compose, to optimizing images, you can focus on application development by letting Claude Code handle it all consistently.

For Docker details, refer to the official Docker documentation. For Claude Code, see the official Anthropic documentation.

#Claude Code #Docker #containers #DevOps #infrastructure