一键导入
docker-entrypoint-pattern
Padrão para criar entrypoint.sh com múltiplos comandos para containers Docker, permitindo execução flexível de diferentes operações.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Padrão para criar entrypoint.sh com múltiplos comandos para containers Docker, permitindo execução flexível de diferentes operações.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | docker-entrypoint-pattern |
| description | Padrão para criar entrypoint.sh com múltiplos comandos para containers Docker, permitindo execução flexível de diferentes operações. |
| triggers | ["entrypoint","dockerfile","docker entrypoint","container commands","docker exec"] |
Padrão para criar entrypoint.sh com múltiplos comandos, permitindo execução flexível de diferentes operações em containers Docker.
Aplicar esta skill quando:
exec "$@" garante que o processo principal receba SIGTERM corretamente# Copiar entrypoint
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Usar como entrypoint
ENTRYPOINT ["/entrypoint.sh"]
CMD ["runserver"] # Comando padrão
Uso:
# Executar comando padrão
docker run myapp
# Executar comando específico
docker run myapp test
docker run myapp migrate
docker run myapp dev
#!/usr/bin/env bash
# Exit immediately if a command exits with a non-zero status
# Treat unset variables as errors
# Fail on pipeline errors
set -euo pipefail
# Function to display CLI help
cli_help() {
local cli_name=${0##*/}
echo "
$cli_name
[Project Name] - Entrypoint CLI
Usage: $cli_name [command]
Commands:
dev Start development server
prod Start production server
test Run tests with coverage
migrate Apply database migrations
health Check service health
* Display this help message
Environment Variables:
PORT Server port (default: 8000)
WORKERS Number of workers (default: 4)
LOG_LEVEL Logging level (default: info)
"
exit 1
}
# Main command handler
case "${1:-help}" in
dev)
# Development server
;;
prod|runserver)
# Production server
;;
test)
# Run tests
;;
migrate)
# Run migrations
;;
health)
# Health check
;;
*)
cli_help
;;
esac
Sempre usar set -euo pipefail:
set -e: Para ao primeiro erroset -u: Erro se variável não definidaset -o pipefail: Falha se qualquer comando em pipeline falharSempre usar exec "$@" no final:
Sempre tornar executável:
RUN chmod +x /entrypoint.sh
Sempre usar formato exec no ENTRYPOINT:
ENTRYPOINT ["/entrypoint.sh"] # ✅ Correto
# NÃO usar: ENTRYPOINT /entrypoint.sh # ❌ Errado
Sempre validar variáveis críticas:
if [ -z "${SECRET_KEY:-}" ]; then
echo "ERROR: SECRET_KEY not set"
exit 1
fi
Referência: core/templates/entrypoint/django-entrypoint.sh
Comandos típicos:
migrate - Aplicar migrationstest - Executar testesdev - Django runserverprod - Gunicorncollectstatic - Coletar arquivos estáticosReferência: core/templates/entrypoint/fastapi-entrypoint.sh
Comandos típicos:
migrate - Alembic upgrade headtest - Executar testesdev - Uvicorn com reloadprod - Uvicorn multi-workerhealth - Health checkReferência: core/templates/entrypoint/nodejs-entrypoint.sh
Comandos típicos:
test - Executar testesdev - Nodemon ou ts-node-devprod - Node dist/index.jsseed - Executar seed scriptshealth - Health checkReferência: core/templates/entrypoint/react-entrypoint.sh
Comandos típicos:
dev - Vite/Next.js dev serverbuild - Build de produçãoprod - Servir build estático (nginx)test - Executar testeswait_for_service() {
local host=$1
local port=$2
local service=$3
echo "⏳ Waiting for $service at $host:$port..."
until nc -z "$host" "$port"; do
echo "$service is unavailable - sleeping"
sleep 2
done
echo "✅ $service is ready!"
}
# Aguardar dependências antes de iniciar
wait_for_service db 5432 "PostgreSQL"
wait_for_service redis 6379 "Redis"
# Validar variáveis críticas
REQUIRED_VARS=("DATABASE_URL" "SECRET_KEY")
for var in "${REQUIRED_VARS[@]}"; do
if [ -z "${!var:-}" ]; then
echo "ERROR: $var not set"
exit 1
fi
done
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}
log "Starting application..."
log "Port: ${PORT:-8000}"
log "Environment: ${ENVIRONMENT:-development}"
health)
# Verificar dependências
check_database || exit 1
check_redis || exit 1
echo "✅ All services healthy"
exit 0
;;
# Rodar migrations apenas se necessário
if [ "${RUN_MIGRATIONS:-false}" = "true" ]; then
echo "📦 Running migrations..."
alembic upgrade head
fi
# Coletar estáticos apenas em produção
if [ "${ENVIRONMENT:-development}" = "production" ]; then
echo "📁 Collecting static files..."
python manage.py collectstatic --noinput
fi
FROM python:3.11-slim AS base
WORKDIR /app
# Instalar dependências
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copiar código
COPY . .
# Copiar entrypoint
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Expor porta
EXPOSE 8000
# Entrypoint e CMD
ENTRYPOINT ["/entrypoint.sh"]
CMD ["prod"] # Comando padrão
services:
backend:
build: .
entrypoint: ["/entrypoint.sh"]
command: ["dev"] # Override CMD
environment:
- PORT=8000
- RUN_MIGRATIONS=true
set -euo pipefail no iníciocli_help() implementadaexec "$@" usado no final de cada comandocore/templates/entrypoint/core/templates/django/entrypoint.shcore/docs/programming/devops.md (seção entrypoint)exec "$@" para sinais UnixÚltima Atualização: 2026-01-21
Python best practices e styleguide
Integração completa com Notion usando MCP customizado (notion-automation-suite)
Gera critérios de aceite Given/When/Then para requisitos funcionais. Inclui happy path, edge cases e falhas.
Cria Architecture Decision Records (ADRs) para decisões técnicas. Inclui alternativas, justificativa e consequências.
Extrai especificações de um sistema legado (código existente) quando não há documentação adequada.
Converte input não estruturado (texto, notas, docs parciais) em requisitos funcionais (FR) e perguntas abertas. Não inventa requisitos.