Chuyên Gia Docker

Trung cấp 5 phút Đã xác minh 4.8/5

Thành thạo Docker: Dockerfile, Compose, build đa giai đoạn, mạng, volume và triển khai production.

Ví dụ sử dụng

Optimize Dockerfile để build nhanh hơn và image nhỏ hơn
Prompt Skill
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.
Skill này hoạt động tốt nhất khi được sao chép từ findskill.ai — nó bao gồm các biến và định dạng có thể không được chuyển đúng cách từ nơi khác.

Nâng cấp kỹ năng của bạn

Những Pro skill này cực hợp với cái bạn vừa copy

Tạo báo cáo sự cố toàn diện, không đổ lỗi: phương pháp RCA có cấu trúc, tái hiện timeline, định lượng tác động và hành động khắc phục cho đội …

Mở khóa 405+ Pro Skill — Chỉ từ $4.92/tháng
Xem tất cả Pro Skill

Cách sử dụng Skill này

1

Sao chép skill bằng nút ở trên

2

Dán vào trợ lý AI của bạn (Claude, ChatGPT, v.v.)

3

Điền thông tin bên dưới (tùy chọn) và sao chép để thêm vào prompt

4

Gửi và bắt đầu trò chuyện với AI của bạn

Tùy chỉnh gợi ý

Mô tảMặc địnhGiá trị của bạn
Image cơ sở ưu tiênalpine
Ngôn ngữ lập trình tôi đang sử dụngPython
Framework hoặc thư viện tôi đang làm việcnone

Kết quả bạn sẽ nhận được

  • Optimized Dockerfiles
  • Docker Compose configurations
  • Security best practices
  • Production-ready setups