【发布时间】:2018-04-24 21:05:07
【问题描述】:
我正在使用 Vapor 为 Ubuntu 编写我的 Swift 应用程序。我的任务是拥有最小的 Docker 镜像用于生产。我已经大大缩小了我的图像,但出于好奇,我想知道,我的最终可执行文件是否需要同一目录中所有已编译的 .module、.doc 和 .build 文件?
【问题讨论】:
标签: swift ubuntu vapor server-side-swift
我正在使用 Vapor 为 Ubuntu 编写我的 Swift 应用程序。我的任务是拥有最小的 Docker 镜像用于生产。我已经大大缩小了我的图像,但出于好奇,我想知道,我的最终可执行文件是否需要同一目录中所有已编译的 .module、.doc 和 .build 文件?
【问题讨论】:
标签: swift ubuntu vapor server-side-swift
tl;dr: 没有。
您列出的文件夹/文件是构建过程的副产品,可以安全丢弃。
在分发方面,您的应用程序就像任何其他 Linux 可执行文件一样。您必须在目标系统上拥有所有可用的动态链接库。
这些包括 Swift 工具链的运行时库以及您的应用程序(或其下的框架)用 (*) 链接的任何已编译 C 模块。
您可以使用ldd 命令检查可执行文件的依赖关系。
其中一些作为包提供,其中一些需要手动复制到目标系统。
(*) 对于 Vapor 2 应用程序,此类 C 模块为 libCHTTP.so 和 libCSQLite.so,它们位于您的构建文件夹中。
【讨论】: