Файлы проекта не найдены командой Dockerfile Copy - PullRequest
0 голосов
/ 01 марта 2019

У меня есть основной проект .net (MySolution.Web.API), который ссылается на пару проектов стандарта .net 2.0 (MySolution.Infrastructure и MySolution.Domain)

на моем решении для жесткого диска выглядит следующим образом

    .vs/
    bin/
    packages/
    MySolution.Infrastructure/
    MySolution.Domain/  
    MySolution.Web.API/
    .dockerignore
    docker-compose.yml
    ....
    MySolution.sln

Внутри MySolution.Web.API есть Dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src

COPY MySolution.Web.API.csproj Web.API/
COPY MySolution.Infrastructure.csproj MySolution.Infrastructure/
COPY MySolution.Domain.csproj MySolution.Domain/

RUN dotnet restore MySolution.Web.API.csproj
COPY . .
WORKDIR /src/MySolution.Web.API
RUN dotnet build MySolution.Web.API.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish MySolution.Web.API.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MySolution.Web.API.dll"]

Когда я пытаюсь создать изображение с

docker build -t mysolution.web.api .
Step 1/20 : FROM microsoft/aspnetcore:2.0 AS base
 ---> db030c19e94b
Step 2/20 : WORKDIR /app
 ---> Using cache
 ---> c46d1d16c23c
Step 3/20 : EXPOSE 80
 ---> Using cache
 ---> 615befacb30c
Step 4/20 : FROM microsoft/aspnetcore-build:2.0 AS build
 ---> 06a6525397c2
Step 5/20 : WORKDIR /src
 ---> Using cache
 ---> d8b8d0f73449
Step 6/20 : COPY MySolution.Web.API.csproj MySolution.Web.API/
 ---> Using cache
 ---> bcfb36743124
Step 7/20 : COPY MySolution.Infrastructure.csproj MySolution.Infrastructure/
COPY failed: stat /var/lib/docker/tmp/docker-builder805773291/MySolution.Infrastructure.csproj: no such file or directory   

Поскольку Dockerfile находится внутри MySolution.Web.API /папка Я попытался изменить путь в команде копирования внутри Dockerfile на

COPY ../MySolution.Infrastructure.csproj ../MySolution.Infrastructure/

, но мне это не разрешено.

1 Ответ

0 голосов
/ 01 марта 2019

Проблема в том, что

MySolution.Infrastructure.csproj

находится вне контекста сборки образа Docker.Выполнение такой команды сборки docker

docker build -t mysolution.web.api .

сообщает Docker, что только файлы из текущей папки участвуют в построении образа Docker.Вы должны изменить свой путь к контексту сборки.Попробуйте использовать

docker build -t mysolution.web.api .. 

и изменить пути к файлам в Dockerfile в соответствии с новым путем к контексту сборки.

Для получения дополнительной информации проверьте документацию: https://docs.docker.com/engine/reference/commandline/build/#build-with-path

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