Docker совет №33: Использование двух Dockerfile в одном compose-проекте
Aug 2, 2018 07:08 · 169 words · 1 minute read
Зачастую использование двух 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
, но в данном конкретном случае мне кажется удобнее держать файлы, относящиеся к фронтенду в одном каталоге.