create-dockerfile
について
このスキルは、セキュリティのベストプラクティスとレイヤー最適化に従い、複数の言語(Node.js、Python、Go、Java、Rust)に対応した本番環境対応のDockerfileを生成します。一貫性があり再現可能なデプロイのためにアプリケーションをコンテナ化する必要がある場合にご利用ください。本番環境に適した最適化された構成を作成します。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/create-dockerfileこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
name: create-dockerfile locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Crear Dockerfiles generales de propósito general para múltiples lenguajes (Node.js, Python, Go, Java, Rust) con mejores prácticas de seguridad, optimización de capas, y configuración de producción. Usar cuando se necesite contenerizar cualquier aplicación para despliegue consistente y reproducible. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: basic language: multi tags: docker, dockerfile, containerization, multi-language, best-practices
Crear Dockerfile
Crear Dockerfiles de producción para aplicaciones en cualquier lenguaje con mejores prácticas.
Cuándo Usar
- Contenerizando una aplicación para despliegue en producción
- Necesitando un Dockerfile con mejores prácticas de seguridad
- Creando entornos de desarrollo reproducibles
- Estandarizando la contenerización en un equipo
- Preparando aplicaciones para despliegue en Kubernetes
Entradas
- Requerido: Código fuente de la aplicación
- Requerido: Lenguaje y framework utilizado
- Requerido: Archivo de dependencias (package.json, requirements.txt, go.mod, etc.)
- Opcional: Requisitos de compilación específicos
- Opcional: Variables de entorno necesarias
- Opcional: Archivos de configuración de la aplicación
Procedimiento
Paso 1: Seleccionar Imagen Base Apropiada
Elegir la imagen base según el lenguaje y los requisitos.
# Node.js
FROM node:20-alpine
# Python
FROM python:3.11-slim
# Go
FROM golang:1.21-alpine
# Java
FROM eclipse-temurin:17-jre-alpine
# Rust
FROM rust:1.74-alpine AS builder
Principios de selección:
- Preferir variantes
alpineoslimpara producción - Anclar versiones mayores y menores (no usar
latest) - Usar imágenes oficiales de Docker Hub
Esperado: Imagen base seleccionada que minimiza el tamaño y la superficie de ataque.
En caso de fallo: Verificar compatibilidad de la imagen con la arquitectura del host (amd64 vs arm64), comprobar disponibilidad en Docker Hub.
Paso 2: Configurar Estructura del Dockerfile
Seguir la estructura recomendada para máxima eficiencia de caché.
# 1. Imagen base
FROM python:3.11-slim
# 2. Metadatos
LABEL maintainer="[email protected]"
LABEL version="1.0"
# 3. Crear usuario no-root
RUN groupadd -r appuser && useradd -r -g appuser appuser
# 4. Instalar dependencias del sistema
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# 5. Establecer directorio de trabajo
WORKDIR /app
# 6. Copiar e instalar dependencias (caché de capas)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 7. Copiar código fuente
COPY . .
# 8. Cambiar a usuario no-root
USER appuser
# 9. Healthcheck
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8000/health || exit 1
# 10. Exponer puertos
EXPOSE 8000
# 11. Punto de entrada
CMD ["python", "main.py"]
Esperado: Dockerfile sigue las mejores prácticas de seguridad y optimización de capas.
En caso de fallo: Revisar errores de sintaxis Docker, verificar que los archivos referenciados existen en el contexto de compilación.
Paso 3: Agregar .dockerignore
Excluir archivos innecesarios del contexto de compilación.
.git
.gitignore
node_modules
__pycache__
*.pyc
.env
.venv
README.md
docker-compose*.yml
.dockerignore
Dockerfile
.github
tests/
docs/
*.md
Esperado: El contexto de compilación es mínimo, las compilaciones son más rápidas, no se incluyen secretos.
En caso de fallo: Verificar que no se excluyen archivos necesarios para la compilación.
Paso 4: Compilar y Probar
# Compilar
docker build -t mi-app:latest .
# Ejecutar
docker run -p 8000:8000 mi-app:latest
# Verificar que se ejecuta como no-root
docker run mi-app:latest whoami
# Debe imprimir: appuser
# Verificar tamaño de imagen
docker images mi-app:latest
Esperado: La imagen se compila exitosamente, se ejecuta como usuario no-root, el tamaño es razonable.
En caso de fallo: Revisar logs de compilación, verificar permisos de archivos dentro del contenedor, comprobar healthcheck.
Validación
- La imagen se compila sin errores ni advertencias
- La aplicación se ejecuta correctamente dentro del contenedor
- Se ejecuta como usuario no-root
- El healthcheck funciona correctamente
- El .dockerignore excluye archivos innecesarios
- El tamaño de la imagen es razonable para el lenguaje
- No se incluyen secretos ni credenciales en la imagen
Errores Comunes
- Ejecutar como root: Siempre crear y usar un usuario no-root para seguridad.
- Usar
latestcomo tag: Anclar versiones específicas para reproducibilidad. - No limpiar caché de apt: Siempre agregar
rm -rf /var/lib/apt/lists/*después deapt-get install. - Copiar todo antes de dependencias: Las dependencias deben copiarse e instalarse antes del código fuente.
- Secretos en la imagen: Nunca incluir archivos .env, claves API o credenciales en la imagen.
- Imagen demasiado grande: Usar variantes alpine/slim, compilación multi-etapa, y .dockerignore.
Habilidades Relacionadas
create-multistage-dockerfile- Compilaciones multi-etapa para imágenes más pequeñasoptimize-docker-build-cache- Optimizar caché de compilación Dockercreate-r-dockerfile- Dockerfiles específicos para Rsetup-docker-compose- Orquestación multi-contenedor
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
