VSTS не может создать образ докера - PullRequest
0 голосов
/ 22 мая 2018

У меня есть простой готовый веб-интерфейс VS2017, для которого я пытаюсь создать образ Docker для VSTS и опубликовать образ в реестре контейнера Azure.Но это не работает, ошибка ниже:

2018-05-21T16:49:45.8481201Z Step 7/17 : COPY WebApi/WebApi.csproj WebApi/
2018-05-21T16:49:45.8503445Z COPY failed: stat /var/lib/docker/tmp/docker-builder936381234/WebApi/WebApi.csproj: no such file or directory
2018-05-21T16:49:45.8644972Z ##[error]COPY failed: stat /var/lib/docker/tmp/docker-builder936381234/WebApi/WebApi.csproj: no such file or directory
2018-05-21T16:49:45.8732546Z ##[error]/usr/local/bin/docker failed with return code: 1

Это стандартное решение VS2017.

Dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 63537
EXPOSE 44369

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY WebApi/WebApi.csproj WebApi/
RUN dotnet restore WebApi/WebApi.csproj
COPY . .
WORKDIR /src/WebApi
RUN dotnet build WebApi.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish WebApi.csproj -c Release -o /app

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

.dockerignore

.dockerignore
.env
.git
.gitignore
.vs
.vscode
docker-compose.yml
docker-compose.*.yml
*/bin
*/obj

docker-compose.yml

version: '3.4'

services:
  webapi:
    image: webapi
    build:
      context: .
      dockerfile: WebApi/Dockerfile

Я перепробовал все предложенные решения, изменивфайл .dockerignore, его удаление и т. д.

Ответы [ 4 ]

0 голосов
/ 03 июля 2018

Моя проблема заключалась в том, что у меня был ненужный Dockerfile, который находился в подкаталоге.

Поскольку VSTS по умолчанию ищет Dockerfile с помощью **/Dockerfile, этот ненужный Dockerfile использовался, что привело к неверному контексту.Правильный файл Docker был проигнорирован.

0 голосов
/ 23 мая 2018

Ваш context в файле компоновки должен быть - context: ./WebApi

Как упоминалось в другом ответе, сборка Docker принимает каталог как context, который является корневым каталогом содержимого, необходимого для построения образа.

0 голосов
/ 01 июня 2018

Я использовал Docker вместо задачи Docker Compose от агентов задач сборки.Перейдите в Docker Compose и укажите, что Docker compose сделал свое дело.

0 голосов
/ 23 мая 2018

Он основан на контексте компоновки для копирования файлов, по умолчанию опция Использовать контекст компоновки по умолчанию отмечена для задачи Докер , вам необходимо снять этот флажок и указатьсоответствующий путь (тот же уровень решения), например . для корневой папки.

...