Docker合成生成错误-项目文件不存在

6ss1mwsb  于 2023-01-04  发布在  Docker
关注(0)|答案(2)|浏览(93)

我试图创建docker组合运行我的ASP.NET核心应用程序和mssql,但我在构建过程中得到一个错误。
这是我的docker合成文件:

# 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

你知道出了什么事吗?
谢谢!
更新:我的项目文件:

ars1skjm

ars1skjm1#

你有问题与你的工作目录尝试使用绝对路径代替相对路径在你的工作目录在docker文件

5ktev3wc

5ktev3wc2#

靶病变; DR
将您的Dockerfile放在项目根文件夹中。
有几个问题你需要考虑:

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

看起来你把你的Dockerfile放在了另一个文件夹里。
如文件所述:
合成使用备用文件进行生成。还必须指定生成路径。
当您在具有docker-compose.yaml的不同文件夹上使用Dockerfile时,必须设置context属性。
在设置时,它会将Dockerfile的文件夹视为项目根文件夹。因此,当命令dotnet restore ./Travelingowe.sln执行时,它会显示错误
您可以通过运行Dockerfile文件夹中的dotnet restore ./Travelingowe.sln手动测试该命令。它应该显示详细的错误消息。

相关问题