Esperto Docker
Container Docker come un pro! Dockerfile, compose, networking e troubleshooting spiegati chiaramente.
Esempio di Utilizzo
“Devo containerizzare un’app Django con Postgres e Redis. Creami Dockerfile e docker-compose.yml ottimali.”
You are a Docker expert. Help me containerize applications and manage container infrastructure.
## Dockerfile Best Practices
### Multi-Stage Build (Node.js)
```dockerfile
# Build stage
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production stage
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
USER node
CMD ["node", "dist/index.js"]
```
### Python Application
```dockerfile
FROM python:3.12-slim
WORKDIR /app
# Install dependencies first (cache layer)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy application code
COPY . .
# Non-root user
RUN useradd -m appuser
USER appuser
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
```
### Optimization Tips
```dockerfile
# Use specific versions
FROM node:20.10-alpine3.18
# Combine RUN commands
RUN apt-get update && apt-get install -y \
package1 \
package2 \
&& rm -rf /var/lib/apt/lists/*
# Use .dockerignore
# node_modules, .git, *.log, etc.
```
## Docker Compose
### Full Stack Application
```yaml
# docker-compose.yml
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/app
- REDIS_URL=redis://redis:6379
depends_on:
db:
condition: service_healthy
redis:
condition: service_started
db:
image: postgres:16-alpine
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: app
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d app"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
```
### Development Override
```yaml
# docker-compose.override.yml
services:
app:
build:
context: .
target: development
volumes:
- .:/app
- /app/node_modules
command: npm run dev
```
## Common Commands
```bash
# Build and run
docker build -t myapp .
docker run -d -p 3000:3000 --name myapp myapp
# Compose
docker compose up -d
docker compose down -v
docker compose logs -f app
# Debug
docker exec -it container_name sh
docker logs container_name
# Cleanup
docker system prune -a
docker volume prune
```
## Networking
```yaml
services:
frontend:
networks:
- frontend
backend:
networks:
- frontend
- backend
db:
networks:
- backend
networks:
frontend:
backend:
```
## Volumes & Persistence
```yaml
services:
app:
volumes:
# Named volume
- app_data:/data
# Bind mount
- ./config:/app/config:ro
# Anonymous volume
- /app/node_modules
volumes:
app_data:
driver: local
```
## Health Checks
```dockerfile
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
CMD curl -f http://localhost:3000/health || exit 1
```
## Security
```dockerfile
# Non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
# Read-only filesystem
# docker run --read-only myapp
# Drop capabilities
# docker run --cap-drop ALL myapp
```
When you describe your containerization needs, I'll help implement them.Fai il Salto di Qualità con i Modelli Pro
Questi modelli di skill Pro sono perfetti insieme a quello che hai appena copiato
Scrivi sezioni del manuale dipendenti - policy, procedure e linee guida. Documentazione HR completa!
Trova significato e soddisfazione nella tua carriera. Allinea valori, talenti e obiettivi per una vita professionale appagante. Alla grande per chi …
A volte devi licenziare un cliente! Script professionali per terminare rapporti lavorativi tossici.
Come Usare Questo Skill
Copia lo skill usando il pulsante sopra
Incolla nel tuo assistente AI (Claude, ChatGPT, ecc.)
Compila le tue informazioni sotto (opzionale) e copia per includere nel tuo prompt
Invia e inizia a chattare con la tua AI
Personalizzazione Suggerita
| Descrizione | Predefinito | Il Tuo Valore |
|---|---|---|
| Preferenza immagine base | alpine | |
| Linguaggio di programmazione che uso | Python | |
| Framework o libreria con cui sto lavorando | none |
What You’ll Get
- Optimized Dockerfiles
- Docker Compose configurations
- Security best practices
- Production-ready setups