【发布时间】:2018-02-04 17:17:12
【问题描述】:
更新 好的,我想出了一些办法,但我仍然没有解决方案。这个问题似乎只发生在基于 Arch 的系统(Antergos、Manjaro、Arch)上。
如果我使用 xfce 和 docker 以及 dotnet core 2 安装干净的系统,我可以使用 dotnet core 构建和运行 docker 映像。
安装VirtualBox后,开始出现下面的问题,所以我怀疑它与一些不起眼的内核模块有关???
同样卸载virtualbox并不能解决问题,唯一的解决办法是重新安装Arch Fresh,这很痛苦。也不能在同一系统上运行 docker 和 virtualbox,同时尝试使用 docker 开发 dotnet core。
结束更新
我正在尝试使用 docker 运行 dotnet core 2,基于 microsoft 文档 (https://github.com/dotnet/dotnet-docker-samples/tree/master/aspnetapp):
我的 Dockerfile 看起来像这样:
FROM microsoft/aspnetcore-build:2.0.0 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 microsoft/aspnetcore:2.0.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "api.bauernsuche.de.dll"]
然后我通过以下方式开始映像构建过程:
docker build -t bauernsucheapi .
构建完成后,我尝试通过以下方式启动新映像:
docker run -it --rm -p 5000:80 --name bauernsuche_api bauernsucheapi
预期:容器正在运行
IS:错误消息: 您的意思是运行 dotnet SDK 命令吗?请从以下位置安装 dotnet SDK: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
现在,由于我使用的是 Microsoft Docker iage,因此我希望 SDK 可以在此使用。此外,我的 Dockerfile 是 Microsoft 示例的直接副本,但有一个更改:版本号从 2.0 更改为 2.0.0,这似乎是正确的,因为 2.0 给了我找不到图像的错误。
那我做错了什么?
我的 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Moq" Version="4.7.99" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" />
<PackageReference Include="xunit" Version="2.3.0-beta4-build3742" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0-beta4-build3742" />
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
【问题讨论】:
-
你能不能把
ENTRYPOINT ["dotnet", "api.bauernsuche.de.dll"]改成ENTRYPOINT ["ls", "-al"],看看你在当前文件夹里看到了什么文件 -
我无法在评论中发布输出,但我期望的一切都在那里(输出目录的内容包括 api.bauernsuche.de.dll)
-
另外从错误消息中我怀疑 dotnet 命令在路径中以某种方式丢失或不在...
-
我替换了 ENTRYPOINT ["/bin/bash"] 并且当我在 docker 容器中时,我可以运行 dotnet api.bauernsuche.de.dll 并且它工作正常......但是当我进入 dotnet运行 api.bauernsuche.de.dll 我得到同样的错误信息。不知何故,入口点将我的 dotnet api.bauernsuche.de.dll 变成了 dotnet run api.bauernsuche.de.dll
-
当我使用 /bin/sh 并输入 dotnet api.bauernsuche.de.dll 时出现错误,所以我想解决方案是使用 ENTRYPOINT ["/bin/bash", "dotnet ", "api.bauernsuche.de.dll"]
标签: docker .net-core dockerfile