Я пытаюсь написать Dockerfile для сборки моего консольного приложения .NET Core 2.2 project-microservice-logger.csproj
.Я получаю некоторые ошибки сборки, и я полагаю, что это потому, что Dockerfile, который я пытаюсь собрать, находится в каталоге, который содержит project-microservice-logger.csproj
Но этот проект имеет некоторые ссылки на проекты, которые находятся вдругой каталог.
/company/project-common/project-common-database/project-common-database.csproj
/company/project-microservices/project-microservice-logger/project-microservice-logger.csproj
Когда я выполняю команду, находясь в каталоге /company/project-microservices/project-microservice-logger
, я получаю сообщения об ошибках типа
Тип или имя пространства имен 'Common'не существует в пространстве имен
Так как я могу собрать его очень хорошо, я знаю, что у него есть что-то из-за контекста сборки Dockers, и что он не может найти файл.
Мой файл Docker не является чем-то особенным, по сути, просто взят из некоторых шаблонов Docker для .NET Core, которые легко доступны онлайн.
FROM microsoft/dotnet:2.2-sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/dotnet:2.2-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "logging.dll"]
Я открыт для внесения изменений в то, как мы делаем ссылки на проекты, еслиэто лучшее решение для будущих ситуаций непрерывного развертывания.
Весь код находится в одном репозитории, но на данный момент разделен на разные решения (ядро, микросервисы иИнтернет)
Версии
.NET Core 2.2
Docker для Mac / Версия 2.0.0.2