По порядку Junior Dockerfile и multi-stage обновлено

Порядок инструкций для кеша

Вопрос

Расставь инструкции Dockerfile Python-сервиса в порядке, который лучше всего использует кеш сборки.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    CMD ["python", "app.py"]
  2. 2
    COPY requirements.txt .
  3. 3
    RUN pip install --no-cache-dir -r requirements.txt
  4. 4
    FROM python:3.12-slim
  5. 5
    COPY . .
  6. 6
    RUN apt-get update && apt-get install -y --no-install-recommends libpq5 && rm -rf /var/lib/apt/lists/*
Показать ответ и разбор

Коротко

Сверху то, что меняется реже всего: база и системные пакеты, затем манифест зависимостей и их установка, потом код, который меняется постоянно. CMD не создаёт слой с файлами и может стоять в конце.

Правильный порядок

  1. 1
    FROM python:3.12-slim
  2. 2
    RUN apt-get update && apt-get install -y --no-install-recommends libpq5 && rm -rf /var/lib/apt/lists/*
  3. 3
    COPY requirements.txt .
  4. 4
    RUN pip install --no-cache-dir -r requirements.txt
  5. 5
    COPY . .
  6. 6
    CMD ["python", "app.py"]

Разбор

Сверху то, что меняется реже всего: база и системные пакеты, затем манифест зависимостей и их установка, потом код, который меняется постоянно. CMD не создаёт слой с файлами и может стоять в конце. При правке кода пересоберётся только слой COPY . ..

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.