Как будешь докеризировать большой проект с исключением одной директории

«Как будешь докеризировать большой проект с исключением одной директории» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для докеризации большого проекта с исключением директории можно использовать .dockerignore файл, аналогично .gitignore. В нем указываются шаблоны файлов и директорий, которые не должны попадать в Docker-образ.

Пример .dockerignore:

# Исключить всю директорию vendor, кроме composer.lock
vendor/*
!vendor/composer.lock

# Исключить временные файлы IDE
.idea
*.swp

# Исключить логи
*.log

# Исключить конкретную директорию (например, cache)
/cache

Важные моменты:

  1. Шаблоны работают рекурсивно
  2. Можно использовать отрицание ! для исключений
  3. Пути указываются относительно контекста сборки (обычно корня проекта)
  4. .dockerignore должен находиться в той же директории, что и Dockerfile

Пример Dockerfile:

FROM php:8.2-fpm
WORKDIR /var/www
COPY . .
# Остальные инструкции...