Как структурно разложить разные Dockerfile для одного проекта?
Изучаю докер, и хочу сделать первый проект на нем.
Как я понял, каждый сервис должен быть в отдельном контейнере.
Например:
1. mysql
2. php-apache
3. redis
4. rabbitmq
5. data-storage
в результате получается 5 образов, которые необходимо собирать, т.к. 5 Dockerfile.
Как структурно их нужно правильно организовать ? Неужели в корне проекта должно быть 5 Dockerfile'оф ?
Мне кажется, в корне проекта должен быть только docker-composer.yaml который уже будет из этих Dockerfile билдить и поднимать images.
Привет Вцелом правильно, если хочешь напиши email, скину ссылки на примеры из своего GitHub профиля. Вообще не обязательно должно быть 5 Dockerfile, это если нужно тонко сконфигурировать их, тоесть например в php образе завичмости, наподобии pdo и т.д.
Dockerfile нужен только если основной образ нужно модифицировать, так достаточно в docker-compose.yml указать название основного образа и прописать пару настроек, если они изначально поддерживаются (имя юзера, пароль и т.п.). Мне например обычно нужно только для php-fpm Dockerfile прописать и иногда для mysql, остальные образы ставлю как есть
т.е. правильно понимаю, что если мне нужно использовать готовый образ без модификацией - dockerfile не обязателен и можно сразу в docker-compose ?
а в самом docker-compose вообще модифицировать нельзя (кроме volumes, пробросов ip и т.п.) ?
и второй момент, все же, если получилось так, что у вас N-Dockerfile'ов, как вы храните в проекте? разные директории ? или суффиксы к файлам какие-то (аля Dockerfile.mysql, Dockerfile.rabbitmq). Насколько знаю, не все версии докера поддерживают различные наименования докерфайла +из-за нестандартного наименования, в различных IDE может теряться подсветка синтаксиса.
topuserman, я храню так:
<Папка проекта>/docker/<название контейнера, совпадающее с docker-compose.yml>/Dockerfile. Иногда я видела что Dockerfile для пхп бросают прямо в корень проекта вместе с docker-compose.yml, но как по мне это неудобно. За все 6 лет в айти ни разу не видела Dockerfile с суффиксами))