Dockerfile מהיר ובטוח עם Claude

📚 DevOps עם Claude ⏱️ 8 דק׳ 🎓 מתחילים ✓ חינם לגמרי
Dockerfile מהיר ובטוח עם Claude

למה ה-Dockerfile שלך הוא חור אבטחה מהלך

ב-2025 נפרצו קונטיינרים ב-47% יותר מהשנה הקודמת. שלושת הגורמים המובילים: base image פגיע (32%), הרצה כ-root (28%), secrets hardcoded בתוך ה-image (12%). כל אחת מהבעיות האלה ניתנת למניעה ב-Dockerfile, אם יודעים לכתוב אותו נכון. רוב הדוגמאות באינטרנט לא יודעות.

צוות DevOps של סטארטאפ ישראלי בתחום הפינטק גילה שה-Docker image שלהם שוקל 1.2GB, רץ כ-root, ויש בו 47 critical CVEs. כל deploy ל-ECS לקח 8 דקות. עם Claude Sonnet 4.6, ב-20 דקות הם כתבו Dockerfile חדש: 87MB, non-root user, אפס critical CVEs, deploy בדקה וחצי.

עדכון 2025: Docker Hardened Images חינמיים

בדצמבר 2025 Docker שחררה 1,000+ Hardened Images (DHI) בחינם תחת Apache 2.0. אלה images שנבנו במיוחד לאבטחה, stripped מרכיבים מיותרים, pre-scanned לפני release, ומתעדכנים אוטומטית. הם מפחיתים CVEs ב-95% לעומת community images. זמינים ב-dhi.io ו-Docker Hub.

השינוי הזה חשוב: אם distroless נראה לכם מסובך מדי (אין shell, קשה לדיבוג), DHI הוא האלטרנטיבה הבוגרת. Claude מכיר את שניהם ויבחר את הנכון לפרויקט שלכם.

פרומפט 1: Dockerfile מאפס, production-ready

זה הפרומפט שצריך לשנן. תנו לו לעבוד:

אתה מומחה Docker אבטחה וביצועים.
כתוב Dockerfile production-ready ל-Node.js 20 API:

אבטחה:
- Multi-stage build (builder + production stages)
- Non-root user: uid 1001, שם appuser
- Minimal base image: distroless או DHI
- אין secrets hardcoded
- .dockerignore מלא

ביצועים:
- pnpm install ב-builder stage בלבד
- Layer caching: COPY package.json לפני COPY src
- Image קטן מ-120MB

Runtime:
- HEALTHCHECK: GET /health, interval 30s, timeout 5s
- WORKDIR /app
- signal handling נכון (node ישירות, לא npm start)
- EXPOSE 3000

כתוב גם: .dockerignore מלא ו-docker-compose.yml לפיתוח.

למה כל שורה חשובה:

כתוב לי Dockerfile לאפליקציה Node.js
כתוב Dockerfile production-ready ל-Node.js 20 API: multi-stage build (builder + production), non-root user uid 1001, pnpm, distroless base image, image קטן מ-120MB, HEALTHCHECK על GET /health עם interval 30s, signal handling נכון עם node ישירות (לא npm start). כתוב גם .dockerignore מלא.

פרומפט 2: סריקת אבטחה על Dockerfile קיים

יש לכם Dockerfile ישן? זה הפרומפט שיפרק אותו:

סקן את ה-Dockerfile הזה לבעיות אבטחה וביצועים:

[הדבק את ה-Dockerfile שלך כאן]

עבור כל בעיה:
1. תאר את הבעיה במדויק
2. דרג חומרה: Critical / High / Medium / Low
3. הסבר את ה-attack scenario, מה תוקף יכול לעשות
4. כתוב את הקוד המתוקן

בסוף: כתוב את ה-Dockerfile המלא לאחר כל התיקונים.

המשפט "attack scenario" גורם ל-Claude להסביר למה הבעיה מסוכנת, לא רק לרשום אותה. זה שימושי לשכנע צוות לתקן. המשפט "Dockerfile המלא" מונע קבלת רשימה שצריך לממש ידנית.

multi-stage build, השוואה מספרית

פרמטר Single-stage Multi-stage
גודל image 800MB-1.5GB 80-150MB
CVEs אופייניים 40-100+ (כולל build tools) 0-5 (runtime only)
attack surface גבוה (gcc, curl, git...) מינימלי (רק node runtime)
deploy time (ECR/GCR) 6-10 דקות 1-2 דקות

טעויות נפוצות, ואיך Claude עוזר להימנע מהן

workflow מומלץ עם Claude

השתמשו ב-Claude Opus 4.7 פעם אחת כדי לכתוב Dockerfile template מושלם לה-stack שלכם, ושמרו אותו כ-.github/templates/Dockerfile. בכל פרויקט חדש, תנו ל-Sonnet 4.6 לאדפט את ה-template לצרכים הספציפיים, מהיר ועקבי. הוסיפו step ב-CI שמריץ trivy scan ומעביר את הפלט ל-Claude לניתוח:

# ב-.github/workflows/docker.yml
- name: Scan image
  run: trivy image myapp:latest --format json > trivy-results.json

# אחר כך שלחו את trivy-results.json לClaude:
# "נתח את תוצאות הסריקה האלה. עבור כל CVE: מה חומרתו,
# האם הוא exploitable, ואיך לתקן אותו. עדיפות: Critical ראשון."
distroless קטן יותר ב-50% מ-alpine
אין shell, תוקף עם RCE לא יכול להריץ פקודות אינטראקטיביות
distroless מאיץ startup time של Node.js
distroless לא תומך בכל npm packages
COPY . . ואז RUN npm install
COPY package*.json . ואז RUN npm ci ואז COPY . .
COPY . . ואז COPY package.json ואז RUN npm install
הם נשארים כ-environment variables בזמן ריצה
הם מאטים את ה-build process
הם גלויים ב-docker history לכל מי שיש לו גישה ל-image
רק ARGs עם שמות ספציפיים נשמרים ב-image

רוצה ללמוד עם מעקב התקדמות, קוויזים ותעודה?

כל 130 השיעורים פתוחים בחינם, כולל נגן אינטראקטיבי, שמירת התקדמות ותעודה דיגיטלית בסיום.