Azure devopsでアプリをビルドすると、Data.csprojのData /へのコピーが失敗します。ただし、最初のコピーコマンドであるApi.csprojからApi /へのコピーは正常に機能しています。azure-pipeline.ymlファイルでbuildContextを指定しなかったことに注意してください。しかし、buildContext、buildContext: '$(Build.Repository.LocalPath)'を追加したとき、最初のコピーでも失敗しました。
これを修正する方法についての入力や提案はありますか?buildcontextを検索して追加しようとしたか、csprojにフォルダーを追加しても機能しないようです。たとえば、COPY ["/Data/Data.csproj"、 "Data /"]
これは私のフォルダー構造です(私のazure-pipeline.ymlファイルはAppフォルダーの外にあります):
アプリ - API / - Api.csproj - Dockerfile -データ/ - Data.csproj -ドメイン/ - Domain.csproj - App.sln
私のdockerfile:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["Api.csproj", "Api/"]
COPY ["Data.csproj", "Data/"]
COPY ["Domain.csproj", "Domain/"]
RUN dotnet restore "Api/Api.csproj"
COPY . .
WORKDIR "/src/Api"
RUN dotnet build "Api.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Api.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Api.dll"]
私のazure-pipeline.ymlの一部
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: 'ubuntu-latest'
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: 'App'
dockerfile: '**/Dockerfile'
tags: |
$(tag)
エラーは次のとおりです。
Step 6/28 : WORKDIR /src
---> Running in 266a78d293ee
Removing intermediate container 266a78d293ee
---> 2d899fafdf05
Step 7/28 : COPY ["Api.csproj", "Api/"]
---> 92c8c1450c3c
Step 8/28 : COPY ["Data.csproj", "Data/"]
COPY failed: stat /var/lib/docker/tmp/docker-builder764823890/Data.csproj: no such file or directory
##[error]COPY failed: stat /var/lib/docker/tmp/docker-builder764823890/Data.csproj: no such file or directory
##[error]The process '/usr/bin/docker' failed with exit code 1
さて、何度も試した後、dockerfileとazure-pipelines.ymlを変更することでこれを修正することができました。
この問題を修正したのは、buildContextを変数「$(Build.Repository.LocalPath)」ではなく「App /」に設定することで、正確な値がわからないと思います。
変更した部分を投稿します。
Dockerfile
COPY ["Api/Api.csproj", "Api/"]
COPY ["Data/Data.csproj", "Data/"]
COPY ["Domain/Domain.csproj", "Domain/"]
azure-pipelines.yml
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
buildContext: 'App/'
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加