26 באוקטובר 2026 · 6 דקות קריאה · מתחילים
לקרוא Dockerfile בחמש דקות
עשר הוראות, ולמה הסדר שלהן חשוב יותר מהתוכן. מדריך קריאה מהיר לכל Dockerfile שתפגשו.
Dockerfile נקרא מלמעלה למטה, וכל הוראה היא שכבה במערכת הקבצים. זה כל מה שצריך כדי להבין אחד.
ההוראות שתפגשו
| הוראה | מה היא עושה בפועל |
|---|---|
FROM |
נקודת התחלה — תמונת בסיס |
WORKDIR |
תיקיית עבודה לכל מה שאחרי |
COPY |
מעתיק מהמחשב לתוך התמונה |
ADD |
כמו COPY, וגם פותח ארכיונים ומוריד URLs (עדיף COPY) |
RUN |
מריץ פקודה בזמן הבנייה |
ENV |
משתנה סביבה שנשמר בתמונה |
ARG |
משתנה בנייה בלבד |
EXPOSE |
תיעוד בלבד של הפורט |
USER |
באיזה משתמש ירוץ התהליך |
CMD |
ברירת המחדל להרצה |
ENTRYPOINT |
הפקודה הקבועה; CMD הופך לארגומנטים שלה |
שלוש שאלות שקוראות כל Dockerfile
1. מה נכנס לתמונה? חפשו COPY . . ו-.dockerignore. אם אין .dockerignore, סביר שהתמונה מכילה node_modules ו-.git.
2. מה קורה בזמן בנייה ומה בזמן ריצה? RUN הוא בנייה. CMD/ENTRYPOINT הם ריצה. התקנת תלויות ב-RUN — נכון. התקנה ב-CMD — תרוץ בכל עלייה, ותיפול בלי רשת.
3. מי מריץ? אין USER? התהליך רץ כ-root.
הדפוס שמעיד על בגרות
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
התלויות מותקנות לפני הקוד, ולכן הן נשארות בקאש הבנייה גם כשקובץ קוד משתנה. Dockerfile שמתחיל ב-COPY . . מבשל מחדש את כל העולם בכל שינוי.
מה שכדאי לתקן מיד כשרואים
npm installבמקוםnpm ci— לא דטרמיניסטי.FROM node:latest— הגרסה תשתנה מתחת לרגליים.- סודות ב-
ENVאוARG— גלויים ב-docker history. apt-get installבלי--no-install-recommendsובלי ניקוי — תמונה כבדה.CMD npm start— npm כ-PID 1 לא מעביר אותות. עדיףCMD ["node","server.js"].