Рецеп запуска нужной версии GraphicsMagick в докере (для Ubuntu, LinuxMint, на винде принцип думаю похож)
Этот рецепт подойдет если в системе еще не установлен GraphicsMagick (если установлен можно переименовать бинарник).
Мне это понадобилось потому что на рабочем сервере установлена версия 1.3.8 но её я найти не смог и на рабочем сервере ее менять нельзя по причине "работает не трожь", но сайт развернуть локально нужно, а без GraphicsMagick сайт полноценно не обрабатывает картинки.
Итак:
Создаём docker compose config yml за пределами проекта, чтобы гит его не отслеживал ибо на каждом компе по разному будет всё. Ниже пример моего конфига `my-graphicsmagick-docker-compose.yml`.
Запускаем его
Cледующий шаг:
Создаём файл `sudo /usr/bin/gm` и добавляем в него ссылку на докерконтейнер в котором запущен GraphicsMagick
Делаем файл исполняемым
Всё!
Проверяем в консоли `gm -version` должен показать версию.
Опасные моменты
Создаём исполняемый скрипт вручную в рут области /usr/bin, который будет мимикрировать команду gm и перенаправлять её вызов в запущенный докер контейнер.
Момент опасный потому что:
1) Если уже есть файл `/usr/bin/gm` то его придется удалить и перестанет быть доступным уже установленная в системе утилита GraphicsMagick. (её можно не удалять, а переименовать и когда она понадобиться вернуть обратно).
2) Есть вероятность, что можно забыть о том что файл `/usr/bin/gm` создавался вручную тобой и потом удивляться почему он работает не так как надо или вовсе не работает. Например если забыл запустить докер контейнер, то не будет работать и т.д. и т.п.
3) Если забыть и через время установить GraphicsMagick штатным способом через `apt install gm` то вероятно он затрётся или будет какае-то ошибка и придётся мучаться опять.
Плюсы/Минусы
Плюсы этого способа в том, что можно иметь в системе несколько версий GraphicsMagick и при необходимости запускать нужную.
Минусы довольно сложно и можно запутаться и забыть про то, что файл `/usr/bin/gm` создавался своими руками. Поэтому я и создал эту памятку. Чтобы помнить :)