Как создать приложение для ядра .net, имеющее зависимости в том же решении? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать контейнер для простого консольного приложения ядра .net, которое зависит от стандартной библиотеки .net.

Мое решение выглядит так:

+
|- Solution.sln
|- Library
|  +- Files in Library project
+- App
   |- Files in App
   +- Dockerfile

App зависит от Library.

Пока у меня есть что-то вроде этого:

FROM microsoft/dotnet:2.1-sdk
WORKDIR /app

# copy fsproj and restore as distinct layers
COPY *.fsproj ./
RUN dotnet restore

# copy and build everything else
COPY . ./
RUN dotnet publish -c Release -o out

Но это, очевидно, только контейнеры App.

Как мне сделать так, чтобы Library также входил, не помещая Dockerfile в корень, кроме файла решения?

1 Ответ

0 голосов
/ 16 января 2019

Вы можете изменить контекст сборки Docker на родительский каталог.

Измените свой файл Docker следующим образом:

FROM microsoft/dotnet:2.1-sdk
WORKDIR /app

# copy fsproj and restore as distinct layers
COPY App/*.fsproj ./
RUN dotnet restore

# copy and build everything else
COPY App/. ./
RUN dotnet publish -c Release -o out

И затем запустите (из папки, содержащей Add и Library)

docker build -f App/Dockerfile .

Но да, обычно ваш файл Docker обычно находится там, где вы хотите, чтобы был ваш контекст сборки.Таким образом, в расположении, в котором есть все необходимые вам файлы.

В Docker для Mac / Windows демон docker скопирует каждый файл из контекста сборки в виртуальную машину.Так что здесь есть хит производительности.Что нужно учитывать при структурировании ваших проектов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...