我试图创建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
你知道出了什么事吗?
谢谢!
更新:我的项目文件:
2条答案
按热度按时间ars1skjm1#
你有问题与你的工作目录尝试使用绝对路径代替相对路径在你的工作目录在docker文件
5ktev3wc2#
靶病变; DR
将您的
Dockerfile
放在项目根文件夹中。有几个问题你需要考虑:
Dockerfile
在哪里?docker-compose.yaml
如何指向Dockerfile
?看起来你把你的
Dockerfile
放在了另一个文件夹里。如文件所述:
合成使用备用文件进行生成。还必须指定生成路径。
当您在具有
docker-compose.yaml
的不同文件夹上使用Dockerfile
时,必须设置context
属性。在设置时,它会将
Dockerfile
的文件夹视为项目根文件夹。因此,当命令dotnet restore ./Travelingowe.sln
执行时,它会显示错误您可以通过运行
Dockerfile
文件夹中的dotnet restore ./Travelingowe.sln
手动测试该命令。它应该显示详细的错误消息。