这是.Net Framework 4.7.2控制台应用程序,构建平台x64,以发布模式构建。
OS Windows 10,Docker桌面2.1.0.5
在Windows容器中运行时,程序在读取130 MB二进制文件时挂起File.ReadAllBytes。该文件复制到部件文件夹中,也复制到容器中。 File.Exists验证文件在此处。 直接在容器外部的命令提示符下运行时,该程序运行正常。
请帮助。
Dockerfile
FROM microsoft / dotnet-framework:4.7.2-runtime-windowsservercore-1803
ARG来源
WORKDIR / app
COPY $ {source:-bin / Release}。
CMD [“ fileread-docker.exe”]
代码
{
class Program
{
static void Main(string[] args)
{
var path = Path.Combine("folder", "a.abc");
Console.WriteLine($"Read file from {path}");
if (File.Exists(path))
{
Console.WriteLine($"File exist at {path}");
var file = File.ReadAllBytes(path);
Console.WriteLine($"File has been read at {path}");
}
else
{
Console.WriteLine($"File not exist at {path}");
}
}
}
}
'''
答案 0 :(得分:0)
原来是基本图片问题。
切换后可以正常使用 来自
FROM microsoft / dotnet-framework:4.7.2-runtime-windowsservercore-1803
到
从mcr.microsoft.com/dotnet/framework/runtime:4.8
新的基础映像大到14 GB。以前是6.4GB。
无论如何,这个新的基础图像可以正常工作。上一张图片是从一个示例代码复制而来的。