Golang — Упаковка ресурсов и статических файлов в бинарник с go rice

Задача упаковки статических ресурсов в один жирный бинарник стоит не так часто, но в одном из проектов все-таки это понадобилось. Посмотрев на разные библиотеки из awesome go, остановился на наверное самом простом и более для меня понятном go rice.

В чем фишка? Мы меняем вызовы os.Open на box.Open, далее запускаем утилиту rice embed-go, которая создает для нас rice-box.go с нужным массивом байтов внутри. Утилита сканирует наш код и вызовы box.Open и добавляет файлы в файл rice-box.go

Пример использования:

Далее запускаем rice embed-go. После этой операции у нас должен появиться файл rice-box.go примерно такого содержания:

Рассмотрим нашу конфигурацию:

В dev окружении при наличии реальных файлов go rice будет искать сначала файлы с диска, если нет то будет смотреть rice-box.go Ну и при сборе приложения после запуска rice утилиты файлы будут вшиты в наш бинарник — что нам и требовалось.

Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.