Claude-skill-registry docker-init
Initialize Docker environment with Dockerfile, compose config, and .dockerignore
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/docker-init" ~/.claude/skills/majiayu000-claude-skill-registry-docker-init && rm -rf "$T"
manifest:
skills/data/docker-init/SKILL.mdsource content
Docker Environment Initialization Skill
Overview
This skill creates a complete Docker environment for a project, including:
- Dockerfile optimized for the application type
- docker-compose.yaml with all required services
- .dockerignore for efficient builds
- .env.example for environment configuration
Activation
Use this skill when:
- Setting up Docker for a new project
- Migrating an existing project to Docker
- Adding Docker support to a codebase
Process
1. Detect Project Type
Analyze the project to determine:
- Primary language (Node.js, Python, PHP, Go, etc.)
- Framework (Laravel, Express, Django, etc.)
- Required services (database, cache, queue)
- Existing configuration files
2. Consult Documentation
Read relevant documentation:
for Dockerfile patterns02-dockerfile.md
for compose structure03-compose-fundamentals.md
if database needed05-databases.md
for folder structure10-architecture.md
3. Generate Files
Dockerfile
# Multi-stage build pattern FROM base AS builder # Build steps FROM base AS production # Production setup
Key elements:
- Use appropriate base image
- Multi-stage build for smaller images
- Non-root user for security
- Health check
- Proper COPY order for caching
docker-compose.yaml
services: app: build: . # Configuration db: image: postgres:16 # Configuration volumes: # Named volumes networks: # Network configuration
Key elements:
- No version field (modern compose)
- Health checks
- Dependencies with conditions
- Named volumes
- Proper networking
.dockerignore
node_modules/ .git/ .env *.log
.env.example
# Application NODE_ENV=development PORT=3000 # Database DB_HOST=db DB_USER=appuser DB_PASSWORD=
4. Provide Instructions
Include:
- How to start services
- Available commands
- Environment setup
- Development workflow
Templates by Project Type
Node.js
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . USER node EXPOSE 3000 CMD ["node", "src/index.js"]
Python
FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . USER nobody EXPOSE 8000 CMD ["python", "app.py"]
PHP/Laravel
FROM php:8.3-fpm-alpine WORKDIR /var/www/html RUN apk add --no-cache postgresql-dev && \ docker-php-ext-install pdo pdo_pgsql COPY --from=composer:latest /usr/bin/composer /usr/bin/composer COPY . . RUN composer install --no-dev --optimize-autoloader EXPOSE 9000 CMD ["php-fpm"]
Go
FROM golang:1.22-alpine AS builder WORKDIR /app COPY go.* ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -o main . FROM alpine:latest COPY --from=builder /app/main . EXPOSE 8080 CMD ["./main"]
Output
Generated files:
Dockerfile
(ordocker-compose.yaml
)compose.yaml.dockerignore.env.example
folder for additional configs (if needed)docker/