Пробую упаковать приложение asp.net core в контейнер докер по статье, всё получается, но есть непонятный момент.
Начальная конфигурация для .NET Core 2.0 не позволит вам сразу построить образ с помощью команды docker build. Она настроена на то, что будет запущен файл docker-compose из директории уровнем выше. Для того чтобы построение происходило успешно Dockerfile можно привести к подобному виду:
Все что я сделал, это убрал лишнюю директорию DockerServiceDemo.
Я контейнеризировал проект 2.2, у меня была другая структура каталогов -- но тем не менее, генератор студии мне тоже создал Dockerfile с такой же лишней структурой и мне тоже пришлось убирать из кода эту лишнюю директорию.
Не ахти какие действия, но ведь какая-то в этом логика закладывывалась разработчиками майкрософт?
Зачем же это было нужно вообще? Зачем запускать docker-compose из директории уровнем выше?
docker-compose - оркестратор, и рассчитан на поддержку нескольких сервисов. Соответственно, он может ссылаться на несколько проектов, и на несколько docker-файлов.
Попробуйте создать два проекта в одном решении и вызвать Add Container Orchestrator Support / Docker Compose для обоих. Получите следующую раскладку:
При этом в качестве контекста у обоих проектов будет использоваться папка решения:
services:
app1:
image: ${DOCKER_REGISTRY-}app1
build:
context: .
dockerfile: App1/Dockerfile
app2:
image: ${DOCKER_REGISTRY-}app2
build:
context: .
dockerfile: App2/Dockerfile
т.к. они могут зависеть от других проектов из решения, и исходники этих проектов должны быть доступны в build-контейнере.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости