Выявление ошибок и оптимизация Dockerfile‑псевдокода

Псевдокод не является корректным Dockerfile: установку и создание каталога выполняют через RUN, рабочий каталог задают WORKDIR, запуск — CMD/ENTRYPOINT.

Короткий ответ

Что ответить на собеседовании

Псевдокод не является корректным Dockerfile: установку и создание каталога выполняют через RUN, рабочий каталог задают WORKDIR, запуск — CMD/ENTRYPOINT.

Подробный разбор

Ответ с пояснениями

Условие

Дан псевдокод Dockerfile. Какие недостатки можно обнаружить в его написании и как его можно улучшить?


FROM {base_image}
pip install ...
mkdir {folder}
s3 sync {folder} # 4gb
run app

Ответ

Псевдокод не является корректным Dockerfile: установку и создание каталога выполняют через RUN, рабочий каталог задают WORKDIR, запуск — CMD/ENTRYPOINT.

Пример структуры с заранее выбранным Python-образом:

ARG BASE_IMAGE
FROM ${BASE_IMAGE}
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Зависимости копируются отдельно для переиспользования слоя. Нужны .dockerignore, зафиксированные зависимости, непривилегированный пользователь и осмысленно выбранный базовый образ.

Не стоит автоматически включать 4 ГБ изменяемых данных S3 в каждый образ: это увеличивает сборку, передачу и хранение слоёв. Рассмотрите загрузку в volume/init-container или чтение по мере необходимости. Если данные обязаны входить в образ, закрепите версию и контрольную сумму. Секреты S3 нельзя сохранять в слоях.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее