Вы пытаетесь скопировать проект API.Common.AspNetCore
в каталог над рабочим каталогом (../
). Это невозможно. Я понимаю, что вы делаете это, потому что вам нужно поддерживать относительные ссылки на пути проекта, но единственный способ сделать это - внедрить другие проекты еще на один уровень. Например, вместо копирования API.Customer.csproj
в API.Customer/
, скопируйте в foo/API.Customer/
. Затем, для вашего API.Common.AspNetCore
проекта, вы можете скопировать в API.Common.AspNetCore/
.
EDIT
Думая об этом больше, ошибка, вероятно, связана с противоположной стороной уравнения, но приведенная выше часть также имеет значение. Короче говоря, в Docker есть концепция рабочего или сборочного каталога, который контекстуален каталогу, из которого запускается команда Docker. Если вы работаете с контейнерами Linux в Windows, это становится еще более интересным, поскольку весь этот рабочий каталог фактически копируется в виртуальную машину MobyLinux, работающую в Hyper-V.
В любом случае, из-за этого вам нужно быть осторожным с тем, где вы запускаете команды Docker. Если вам нужен контекст родительского каталога, то вам нужно не использовать этот родительский каталог, так что у вас есть доступ к нему и, конечно же, к вашему проекту. По иронии судьбы, это не то, о чем вам действительно нужно думать для отдельного Dockerfile, поскольку традиционно у вас нет других участвующих приложений, когда вы работаете с Dockerfile напрямую. И наоборот, когда вы управляете несколькими приложениями Docker, вы традиционно используете файл docker-compose.yml
, который будет на родительском уровне для всех участвующих приложений. В любом случае, запуск этих файлов непосредственно в папках, в которых они существуют, обеспечит весь необходимый контекст.
Ваша проблема заключается в том, что вы эффективно катаетесь на двух концепциях, поэтому вам нужно быть намного более осторожным в том, каков ваш реальный контекст, когда вы запускаете команды Docker. Если у вас есть docker-compose.yml, я бы рекомендовал запустить его вместо Dockerfile (ов) напрямую. В Visual Studio вам просто нужно добавить поддержку оркестровки, а не добавлять файлы Docker напрямую. Это добавит Dockerfile, но также добавит проект docker-compose, а затем запустит docker-compose.yml, вместо того, чтобы создавать каждое изображение напрямую, используя Dockerfile.