'Docker compose build error - Project file does not exist
I'm trying to create docker compose which run my ASP.NET Core app and mssql, but I'm getting an error during build.
Here's my docker compose file:
# 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"]
when I run in CMD -> docker-compose up I'm getting:
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
Do you have any ide what is wrong?
Thanks!
Solution 1:[1]
you have issues with your working directory try using absolute path instead of relative path in your working directory in docker file
Solution 2:[2]
TL;DR
Put your Dockerfile
in your project root folder.
There are several question you need to think of:
- Where is your
Dockerfile
? - How does
docker-compose.yaml
point toDockerfile
?
It seems like you put your Dockerfile
in the other folder.
As document mentions:
Compose uses an alternate file to build with. A build path must also be specified.
When you use the Dockerfile
on different folder with docker-compose.yaml
you have to set up the context
property.
As it set up, it will consider the Dockerfile
's folder as project root folder. So when the command dotnet restore ./Travelingowe.sln
executed, it shows you the error
You can manually test the command by running dotnet restore ./Travelingowe.sln
in Dockerfile
's folder. It should show the detail error message.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | varnit |
Solution 2 | å‘‚å¸æ´² |