为了运行F#应用程序,使用最小单声道运行时的Ubuntu Docker映像

我需要构build一个“苗条”泊坞窗图像,其中只包含单声道运行时,以执行预编译的F#应用程序。 换句话说,我想为执行单声道应用程序创build最简单的图像,而不需要额外的东西来编译/构build应用程序。 我使用Ubuntu:16.04作为我的基本映像(重约47MB)。

如果我尝试在该映像的顶部安装mono(使用apt-get install mono-devel),则映像将增长到500MB。 这当然是因为安装了整个单声道开发工具。

我如何才能继续创build一个包含单声道运行时的图像? 有没有办法安装通过apt-get的单声道运行时?

我正在回答这个问题:

我如何才能继续创build一个包含单声道运行时的图像?

为此,答案是肯定的。 有一个运行时包叫做mono-runtime 。 除此之外,还有一个apt选项,可以忽略使用--no-install-recommends安装推荐的软件包(通常是文档和运行时可能不需要的其他东西)。 结合这两者,我们可以在Ubuntu的基础上降低到240MB左右:

 FROM ubuntu RUN apt update && apt install -qy --no-install-recommends mono-runtime libfsharp-core4.3-cil 

在评论中还提到,还有一些基于Alpine Linux的最小图像可能是有趣的,例如https://hub.docker.com/r/frolvlad/alpine-mono/ (目前大约是200 MB) 。