4

我正在使用 Vapor 为 Ubuntu 编写我的 Swift 应用程序。我的任务是拥有最小的 Docker 镜像用于生产。我已经大大缩小了我的图像,但出于好奇,我想知道,我的最终可执行文件是否需要所有已编译的.module,.doc.build同一目录中的文件?

4

1 回答 1

2

tl;博士:不。

您列出的文件夹/文件是构建过程的副产品,可以安全地丢弃。

在分发方面,您的应用程序就像任何其他 Linux 可执行文件一样。您必须在目标系统上拥有所有可用的动态链接库。

这些包括 Swift 工具链的运行时库以及您的应用程序(或它下面的框架)用 (*) 链接的任何已编译的 C 模块。

您可以使用该ldd命令检查可执行文件的依赖关系。其中一些作为包提供,其中一些需要手动复制到目标系统。


(*) 对于 Vapor 2 应用程序,此类 C 模块是libCHTTP.solibCSQLite.so,它们位于您的构建文件夹中。

于 2017-11-13T15:57:34.173 回答