我正在尝试创建运行我的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
你有什么想法吗?
谢谢!
答案 0 :(得分:0)
你的工作目录有问题尝试在docker文件的工作目录中使用绝对路径而不是相对路径
答案 1 :(得分:0)
TL;博士
将您的 Dockerfile
放在您的项目根文件夹中。
有几个问题你需要考虑:
Dockerfile
在哪里?docker-compose.yaml
如何指向 Dockerfile
?您似乎将 Dockerfile
放在另一个文件夹中。
正如 document 提到的:
<块引用>Compose 使用备用文件进行构建。还必须指定构建路径。
当您在不同的文件夹中使用 Dockerfile
和 docker-compose.yaml
时,您必须设置 context
属性。
在设置时,它会将 Dockerfile
的文件夹视为项目根文件夹。所以当命令 dotnet restore ./Travelingowe.sln
执行时,它会显示错误
您可以通过在 dotnet restore ./Travelingowe.sln
的文件夹中运行 Dockerfile
来手动测试该命令。它应该显示详细的错误消息。