Docker compose构建错误 - 项目文件不存在

5

我将尝试创建一个Docker Compose文件,其中运行我的ASP.NET Core应用程序和MSSQL,但是在构建过程中出现了错误。

以下是我的Docker Compose文件:

# Build Stage
FROM microsoft/aspnetcore-build:latest as build-env
WORKDIR /source
COPY . .
RUN dotnet restore ./Travelingowe.sln
RUN dotnet publish --output ${source:-obj/Docker/publish} --configuration Release

# Publish Stage
FROM microsoft/aspnetcore:latest
COPY --from=build-env ./obj/Docker/publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "Api.dll"]

当我在CMD中运行 docker-compose up 命令时,我收到以下信息:
Building api
Step 1/9 : FROM microsoft/aspnetcore-build:latest as build-env
 ---> d6273f7c44d4
Step 2/9 : WORKDIR /source
 ---> Using cache
 ---> 978f1c31e14a
Step 3/9 : COPY . .
 ---> Using cache
 ---> bcc750adcb99
Step 4/9 : RUN dotnet restore ./Travelingowe.sln
 ---> Running in 764199859de4
MSBUILD : error MSB1009: Project file does not exist.
Switch: ./Travelingowe.sln
ERROR: Service 'api' failed to build: The command '/bin/sh -c dotnet restore ./Travelingowe.sln' returned a non-zero code: 1

你知道出了什么问题吗?

谢谢!

更新: 我的项目文件: enter image description here


你将工作目录更改为“/source”。那里是否有Travelingowe.sln文件?如果没有,你可以将工作目录切换回去,或从/source使用相对路径。 - pixelbits
@pixelbits 我更新了我的帖子,并附上了我的项目文件的截图。 - mskuratowski
2个回答

0

简而言之:

在你的项目根目录中放置你的 Dockerfile 文件。


你需要考虑以下几个问题:

  • Dockerfile在哪里?
  • docker-compose.yaml如何指向Dockerfile

看起来你把你的Dockerfile放在另一个文件夹。

正如文档所述:

Compose使用备用文件进行构建。还必须指定构建路径。

当你在不同文件夹中使用docker-compose.yamlDockerfile时,你必须设置context属性。

一旦设置好,它将把Dockerfile的文件夹视为项目根文件夹。因此,当执行命令dotnet restore ./Travelingowe.sln时,会显示错误

您可以在Dockerfile的文件夹中手动测试该命令,方法是运行dotnet restore ./Travelingowe.sln。它应该显示详细的错误信息。


0

如果您在工作目录中遇到问题,请尝试在Docker文件中使用绝对路径而不是相对路径。


Dockerfile在Api文件夹内。我也可以从屏幕截图文件夹位置运行docker-compose up。 - mskuratowski
但是似乎Docker看不到解决方案文件。 - mskuratowski
尝试使用dotnet restore命令而不提供解决方案文件名。 - varnit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接