File.ReadAllBytes执行挂在Docker容器中

时间:2019-12-05 02:50:55

标签: .net docker containers

这是.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}");
            }
        }
    }
}
'''


1 个答案:

答案 0 :(得分:0)

原来是基本图片问题。

切换后可以正常使用 来自

  

FROM microsoft / dotnet-framework:4.7.2-runtime-windowsservercore-1803

  

从mcr.microsoft.com/dotnet/framework/runtime:4.8

新的基础映像大到14 GB。以前是6.4GB。

无论如何,这个新的基础图像可以正常工作。上一张图片是从一个示例代码复制而来的。