【问题标题】:Project not found when build docker container on Azure DevOps在 Azure DevOps 上构建 docker 容器时找不到项目
【发布时间】:2022-07-22 20:26:04
【问题描述】:

我运行命令来构建 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"]

有谁知道这是导致此错误的原因以及如何解决?谢谢。

【问题讨论】:

    标签: c# docker azure-pipelines cicd


    【解决方案1】:

    遵循标准故障排除步骤:检查您在哪个目录中运行 bash 命令。在您的 Dockerfile 中放置 RUN ls 或类似命令,以便您可以在构建期间检查容器中的目录结构并确认它是您所期望的。

    您的 Docker 上下文可能设置的目录级别比您想象的要高。

    您可以从那里适当地设置您的工作目录。

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

    我猜您的代码最终会出现在您的 Dockerfile 中的目录 /src/src/ 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-05
      • 2019-06-27
      • 2020-04-06
      • 1970-01-01
      • 2015-03-29
      • 2017-01-27
      • 2021-02-21
      相关资源
      最近更新 更多