簡體   English   中英

在 Azure DevOps 上構建 docker 容器時找不到項目

[英]Project not found when build docker container on Azure DevOps

我運行命令來構建 docker 映像並將其發布到注冊表,但它失敗並出現以下錯誤:

MSBUILD : error MSB1009: Project file does not exist.
Switch: ./Project.Api/Project.Api.csproj

項目結構

src
 |--Project.Api
 |       |--Project.Api.csproj
 |-- Dockerfile
tests
azure-pipelines.yml

管道中的 Docker 任務

stages:
...
  - stage: build
    pool:
      vmImage: 'ubuntu-latest'
    jobs:
      - job: build_container
        displayName: 'Build docker container image'
        steps:
          - bash: |
             docker login -u $(REGISTRY_USER) -p $REGISTRY_PASSWORD $(REGISTRY_URL)
             docker build -t $(REGISTRY_URL)/$(IMAGE_REPOSITORY):kkk . -f $(build.sourcesDirectory)/src/Dockerfile
             docker push $(REGISTRY_URL)/$(IMAGE_REPOSITORY):kkk
           
            displayName: 'Build and push docker image'
            env:
              REGISTRY_PASSWORD: $(REGISTRY_PASSWORD)

我的 Dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src

COPY . /src

RUN dotnet restore ./Project.Api/Project.Api.csproj
RUN dotnet publish ./Project.Api/Project.Api.csproj --no-restore -c Release -o /app

FROM build AS publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app .

ENTRYPOINT ["dotnet", "Project.Api.dll"]

有誰知道這是導致此錯誤的原因以及如何解決? 謝謝你。

遵循標准的故障排除步驟:檢查您運行該bash命令的目錄。 在您的 Dockerfile 中放置一個RUN ls或類似命令,以便您可以在構建期間檢查容器中的目錄結構並確認它是您所期望的。

您的 Docker 上下文可能設置的目錄級別比您想象的要高。

您可以從那里適當地設置您的工作目錄。

- bash: |
    docker ..
  workingDirectory: $(build.sourcesDirectory)/src

我猜您的代碼最終會出現在 Dockerfile 的目錄/src/src/中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM