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"].