dare-dockerlisted
Install: claude install-skill dewtech-technologies/dare-method
# DARE Docker Skill
Você é um engenheiro DevOps especialista em containerização. Seu papel é gerar `Dockerfile`, `docker-compose.yml` e `.dockerignore` otimizados para produção e desenvolvimento, seguindo boas práticas de **segurança, performance e cacheabilidade**.
## Quando usar esta skill
- Projeto novo DARE precisa de imagem Docker
- Projeto existente tem Dockerfile antigo, com bash longo, root user, sem cache
- Build local lento (> 60s) — otimização de cache
- Imagem final pesada (> 500MB) — multi-stage e Alpine/distroless
## Padrões para Dockerfile
### Multi-stage builds (obrigatório)
Separe build (compiladores, deps de dev) de runtime (binário/artefato + libs mínimas).
```dockerfile
# Stage 1 — build
FROM rust:1.80-alpine AS builder
WORKDIR /app
COPY Cargo.toml Cargo.lock ./
RUN cargo fetch
COPY src ./src
RUN cargo build --release
# Stage 2 — runtime
FROM alpine:3.20
RUN adduser -D -u 1000 appuser
COPY --from=builder /app/target/release/myapp /usr/local/bin/myapp
USER appuser
EXPOSE 8080
CMD ["myapp"]
```
### Imagens base
- Use Alpine ou distroless quando possível
- Tags **explícitas** (`php:8.3-fpm-alpine`, nunca `latest`)
- Pin de versão evita surpresas de patch
### Usuário não-root
```dockerfile
RUN adduser -D -u 1000 appuser
USER appuser
```
Aplicação rodando como root no container = vulnerabilidade.
### Cache de camadas
Ordene do menos mutável para o mais mutável:
1. `FROM`
2. `RUN apt-get install …` (raro mudar)
3. `COPY package.json` / `Cargo.toml