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

时间:2017-11-13 21:44:37

标签: docker asp.net-core .net-core docker-compose dockerfile

我正在尝试创建运行我的ASP.NET核心应用程序和mssql的docker compose,但是我在构建期间遇到错误。

这是我的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

你有什么想法吗?

谢谢!

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

2 个答案:

答案 0 :(得分:0)

你的工作目录有问题尝试在docker文件的工作目录中使用绝对路径而不是相对路径

答案 1 :(得分:0)

TL;博士

将您的 Dockerfile 放在您的项目根文件夹中。


有几个问题你需要考虑:

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

您似乎将 Dockerfile 放在另一个文件夹中。

正如 document 提到的:

<块引用>

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

当您在不同的文件夹中使用 Dockerfiledocker-compose.yaml 时,您必须设置 context 属性。

在设置时,它会将 Dockerfile 的文件夹视为项目根文件夹。所以当命令 dotnet restore ./Travelingowe.sln 执行时,它会显示错误

您可以通过在 dotnet restore ./Travelingowe.sln 的文件夹中运行 Dockerfile 来手动测试该命令。它应该显示详细的错误消息。