【发布时间】:2019-11-05 08:28:01
【问题描述】:
我有 asp.net 核心解决方案,其中包含 3 个项目。
我想将它部署到 docker 容器中。
解决方案如下所示
这是我的 Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "tooseeweb.dll"]
但是当我运行 docker build 我在控制台中得到了这个
跳过项目“/TooSeeWeb.Core/TooSeeWeb.Core.csproj”,因为它 没找到。
跳过项目 “/TooSeeWeb.Infrastructure/TooSeeWeb.Infrastructure.csproj”,因为它 没找到。
MSBUILD:错误 MSB1009:项目文件不存在。切换:TooSeeWeb.csproj
错误:ResponseItem.ErrorDetail[code=1,message=命令'/bin/sh -c dotnet build "TooSeeWeb.csproj" -c Release -o /app' 返回了一个 非零代码:1] 未能部署 ' Dockerfile: TooSeeWeb/Dockerfile':命令'/bin/sh -c dotnet build "TooSeeWeb.csproj" -c Release -o /app' 返回非零代码:1
哪里有问题?
更新
我的解决方案的文件夹结构
TooSeeWeb
|- aspnet-core(folder)
|-TooSeeWeb (folder)
|- TooSeeWeb.sln
|- TooSeeWeb
|-Dockerfile
|- TooSeeWeb.csproj
|- TooSeeWeb.Core(folder)
|- TooSeeWeb.Core.csproj
|- TooSeeWeb.Infrastructure(folder)
|- TooSeeWeb.Infrastructure.csproj
更新2
我将 dockerfile 移动到与 sln 相同的文件夹中(它是一个文件夹)
现在我的 docker 文件看起来像这样
ROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.sln ./
COPY TooSeeWeb/*.csproj ./TooSeeWeb/
COPY TooSeeWeb.Core/*.csproj ./TooSeeWeb.Core/
COPY TooSeeWeb.Infrastructure/.*csproj ./TooSeeWeb.Infrastructure/
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
WORKDIR /app/TooSeeWeb
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "tooseeweb.dll"]
但我有错误
第 4/14 步:复制 *.sln ./ 复制失败:没有指定源文件
【问题讨论】:
标签: c# asp.net docker asp.net-core