スキル一覧に戻る

create-dockerfile

pjt222
更新日 Yesterday
3 閲覧
17
2
17
GitHubで表示
メタdesign

について

このスキルは、セキュリティのベストプラクティスとレイヤー最適化に従い、複数の言語(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-almanac
Git クローン代替
git 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 alpine o slim para 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 latest como tag: Anclar versiones específicas para reproducibilidad.
  • No limpiar caché de apt: Siempre agregar rm -rf /var/lib/apt/lists/* después de apt-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ñas
  • optimize-docker-build-cache - Optimizar caché de compilación Docker
  • create-r-dockerfile - Dockerfiles específicos para R
  • setup-docker-compose - Orquestación multi-contenedor

GitHub リポジトリ

pjt222/agent-almanac
パス: i18n/es/skills/create-dockerfile
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

関連スキル

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を選択してください。

スキルを見る