Я пишу свое приложение Swift для Ubuntu с помощью Vapor. И моя миссия - иметь наименьшее изображение Докера для производства. Я значительно изменил свой имидж, но я хотел знать, просто из любопытства, нужен ли мой окончательный исполняемый файл всем скомпилированным файлам .module
, .doc
и .build
в том же каталоге?
tl; dr: Нет.
Папки/файлы, которые вы указали, являются побочными продуктами процесса сборки и могут быть безопасно удалены.
Когда дело доходит до дистрибутива, ваше приложение точно так же, как и любой другой исполняемый файл Linux. Вы должны иметь все динамически связанные библиотеки, доступные в целевой системе.
К ним относятся библиотеки времени выполнения Swift toolchain плюс любые скомпилированные C-модули вашего приложения (или рамки под ним), ссылки с (*).
Вы можете проверить зависимости исполняемого файла с помощью команды ldd
.
Некоторые из них доступны как пакеты, некоторые из них необходимо будет скопировать в целевую систему вручную.
(*) В случае приложения Vapor 2 такие C-модули являются libCHTTP.so
и libCSQLite.so
, которые помещаются в вашу папку сборки.