作者:曾吾翰 | 来源:互联网 | 2022-12-01 10:11
我刚刚使用Visual Studio 15.8.8通过.NET Core项目(2.1)开始了新的解决方案。通过将docker compose文件设置为启动项目,它可以运行和调试它。有用!
从逻辑上讲,我应该能够使用简单的命令行语句构建docker映像。但是,它抱怨找不到csproj。这很奇怪。该文件存在,并且正如我所告诉的,我可以从Visual Studio中运行它。我从一个目录和具有dockerfile的目录尝试了它。同样的问题。
我该如何解决?我唯一想要的就是简单地构建映像,然后仅使用docker命令运行它。
Docker文件
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TryNewDocker2/TryNewDocker2.csproj", "TryNewDocker2/"]
RUN dotnet restore "TryNewDocker2/TryNewDocker2.csproj"
COPY . .
WORKDIR "/src/TryNewDocker2"
RUN dotnet build "TryNewDocker2.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "TryNewDocker2.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TryNewDocker2.dll"]
Het是撰写文件:
version: '3.4'
services:
trynewdocker2:
image: ${DOCKER_REGISTRY}trynewdocker2
build:
context: .
dockerfile: TryNewDocker2/Dockerfile
从逻辑上讲,我希望“ docker-compose up”在解决此问题时能够继续工作。
1> Tao Zhou..:
这是由dockerfile中文件路径的错误根文件夹引起的。
要从中启动Docker
,其根文件夹为C:\Users\...\repos\TryNewDocker2
,但从command
其运行时,其根目录为C:\Users\...\repos\TryNewDocker2\TryNewDocker2
,因此的路径TryNewDocker2.csproj
已从更改TryNewDocker2/TryNewDocker2.csproj
为TryNewDocker2.csproj
请尝试以下dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 59162
EXPOSE 44342
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["TryNewDocker2.csproj", "TryNewDocker2/"]
RUN dotnet restore "TryNewDocker2/TryNewDocker2.csproj"
COPY . ./TryNewDocker2/
WORKDIR "/src/TryNewDocker2"
RUN dotnet build "TryNewDocker2.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "TryNewDocker2.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TryNewDocker2.dll"]
更新资料
要同时在Docker和命令中使用,请不要更改dockerfile,并且从下面的路径通过指定dockerfile路径运行命令。
C:\Users\...\repos\TryNewDocker2>docker build -t gogo -f TryNewDocker2/Dockerfile .