Это возможно, просто не очень хорошая практика. Вы хотите изолировать программный стек для улучшения управляемости (проще развертывания обновлений), модульности (вы можете повторно использовать определенный компонент в другом проекте и даже иметь несколько проектов, повторно использующих один и тот же образ) и безопасности (уязвимость программного обеспечения в компоненте стек вряд ли сможет достичь другого компонента).
Итак, вместо того, чтобы собирать все вместе в одно изображение, я рекомендую использовать Docker Compose , чтобы иметь несколько изображений для каждого компонента стека (вы можете даже извлекать общие, современные изображения из Docker Hub ) и соберите их из файла Compose, чтобы с помощью одной команды вы могли запустить все компоненты, необходимые для работы вашего приложения.
При этом вполне возможно объединить весь стек в один и тот же Dockerfile, но это будет важный беспорядок. Вам понадобится Dockerfile, который устанавливает все необходимое программное обеспечение, что сделает его громоздким и сложным в обслуживании. Если вы действительно готовы к этому, вам придется начать с базового образа ОС (возможно, Windows Server Core IIS ) и начать установку всего остального программного обеспечения вручную. Если есть файлы Docker для других компонентов, которые вам нужно установить, и они используют один и тот же базовый образ или совместимый образ, вы можете просто скопировать и вставить содержимое в ваш файл Dockerfile, за счет указанной управляемости.
Кроме того, вам определенно следует использовать тома для обеспечения безопасности ваших данных, особенно если вы используете этот монолитный подход, поскольку в противном случае вы рискуете потерять данные из базы данных.
TL; DR: да, вы можете, но вы действительно не хотите этого, поскольку есть гораздо лучшие альтернативы, которые почти столь же сложны.