в docker, tips

Docker совет №33: Использование двух Dockerfile в одном compose-проекте


Зачастую использование двух Dockerfile требуется когда вы работаете над проектом, в котором можно (и нужно) четко разграничить составляющие — например, на frontend и backend. Давайте разберемся!

Ранее мы уже рассматривали похожую проблему в статье Структура проекта с несколькими Dockerfile и docker-compose, и сегодняшняя статья — скорее частный вариант решения проблемы.

Допустим, для вашего фронтенда необходим Webpack (или его аналог). В таком случае, очень хорошей идеей будет «отделить» его в отдельный сервис, описанный в файле docker-compose.yml (особенно, если Webpack настроен как watcher и сам пересобирает assets при изменениях). В таком случае, файл docker-compose.yml может выглядеть примерно так:

services:
  webpack:
    build:
      context: "."
      dockerfile: "Dockerfile.webpack"

  web:
    build: "."

Сервис web будет использовать для сборки файл с именем Dockerfile в текущей директории, в то время как сервис webpack будет собираться из файла с именем Dockerfile.webpack в той же директории.

Конечно, можно было бы создать отдельный каталог (например, ./assets) и положить в него Dockerfile для сервиса webpack, но в данном конкретном случае мне кажется удобнее держать файлы, относящиеся к фронтенду в одном каталоге.

Добавить комментарий