Как создать и запустить приложение .NET Core Console в Docker, которое содержит несколько библиотек? - PullRequest
0 голосов
/ 23 ноября 2018

Я изо всех сил пытаюсь найти хороший пример этого, поэтому надеюсь на некоторую помощь.

Моя структура проекта / файла выглядит следующим образом:

\src
\src\BulkImporter
    \src\BulkImporter\BulkImporter.csproj
\src\lib1
    \src\lib1\lib1.csproj
\src\lib2
    \src\lib2\lib2.csproj

Итак, я 'Я пытаюсь докеризировать BulkImporter.Чтобы собрать приложение, ему нужно lib1 и lib2.

Я пытаюсь сделать многоэтапную сборку докера, поэтому сборка + образ времени выполнения.

Вот мой текущийDockerfile:

FROM microsoft/dotnet:2.1-sdk AS build-env
WORKDIR /app

# copy everything and build the project
COPY . ./
RUN dotnet restore src/BulkImporter/*.csproj
RUN dotnet publish src/BulkImporter/*.csproj -c Release -o out

# build runtime image
FROM microsoft/dotnet:2.1-runtime
WORKDIR /app
COPY --from=build-env /app/src/BulkImporter/out ./
ENTRYPOINT ["dotnet", "BulkImporter.dll"]

Но, похоже, это не так.Я не знаю, нужно ли мне «строить все».Кроме того, у меня есть файл csv в моем приложении, который выдает ошибку при запуске приложения, как это выглядит в app/Data/mycsv.csv, когда обычно он существует в /Data/mycsv.csv.

Так что яПодумайте, есть ли какие-то проблемы с моим Dockerfile.

Может кто-нибудь указать мне хороший пример того, как это сделать, или скажите, что не так с моим Dockerfile?

Спасибо

РЕДАКТИРОВАТЬ

Я обновил свой Dockerfile, чтобы он был тесно основан на примере dotnet docker .

Он работает нормально, но все еще обращен к CSVпроблема.

Вот мой обновленный файл dockerfile:

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY src/BulkImporter/BulkImporter.csproj ./BulkImporter/
COPY src/Domain/Domain.csproj ./Domain/
COPY src/ElasticSearch.SearchService/ElasticSearch.SearchService.csproj ./ElasticSearch.SearchService/
WORKDIR /app/BulkImporter
RUN dotnet restore

# copy and publish app and libraries
WORKDIR /app/
COPY src/BulkImporter/. ./BulkImporter/
COPY src/Domain/. ./Domain/
COPY src/ElasticSearch.SearchService/. ./ElasticSearch.SearchService/
WORKDIR /app/BulkImporter
RUN dotnet publish -c Release -o out

# build final release runtime image
FROM microsoft/dotnet:2.1-runtime AS runtime
WORKDIR /app
COPY --from=build /app/BulkImporter/out ./
ENTRYPOINT ["dotnet", "BulkImporter.dll"]

Я создаю образ из папки над папкой src, используя следующую команду:

сборка докера -t навальный импортер.-f. \ src \ BulkImporter \ Dockerfile

Ошибка, которую я получаю при запуске: Could not find file '/app/FakeData\locations.csv'.

Тем не менее, когда я делаю dotnet publish из папки BulkImporter вна моем компьютере в папке bin\Release\netcoreapp2.1\publish\FakeData находится файл locations.csv.

Код, который загружает CSV, выглядит следующим образом:

var suburbLines = (await File.ReadAllLinesAsync("FakeData\\locations.csv")).Skip(1);

(отлично работает вне Docker).

Может кто-нибудь определить проблему?

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