やるたびにはまって調べている気がするので、自分のためのメモです。Visual Studioでプロジェクト作るときに「Dockerサポートを追加」するとDockerfileおよび、docker-composeのプロジェクトが追加されます。ローカルではいいのですが、Azure Pipelines(に限らずたぶんCIでは)こんなエラーになります。
Step 7/26 : COPY ["kkdockerweb/kkdockerweb.csproj", "kkdockerweb/"] COPY failed: file not found in build context or excluded by .dockerignore: stat kkdockerweb/kkdockerweb.csproj: file does not exist ##[error]COPY failed: file not found in build context or excluded by .dockerignore: stat kkdockerweb/kkdockerweb.csproj: file does not exist ##[error]The process '/usr/bin/docker' failed with exit code 1
初期状態はこんなYAMLのはずです。
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["kkdockerweb.csproj", "kkdockerweb/"] RUN dotnet restore "kkdockerweb/kkdockerweb.csproj" COPY . . WORKDIR "/src/kkdockerweb" RUN dotnet build "kkdockerweb.csproj" -c Release -o /app/build
エラーは2回目のCOPY . .
です。なんでかというと、CIとローカルマシンでdocker buildするときの場所が違うからのようです。YAMLでbuildContext
を指定するか、DockerfileのCOPYを直します。Dockerfileを直しました。
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["kkdockerweb.csproj", "kkdockerweb/"] RUN dotnet restore "kkdockerweb/kkdockerweb.csproj" COPY . kkdockerweb/ WORKDIR "/src/kkdockerweb" RUN dotnet build "kkdockerweb.csproj" -c Release -o /app/build