Imager (Imager Client)
Сервис принимает запрос на миниатюру (ассет) — генерирует его из исходного файла и сохраняет на диск в указанное место.
При повторных запросах того же ассета сервис отдает ранее созданный, сжатый файл.
Например, вы хотите сжать и уменьшить картинку. Для этого нужно сгенерировать ссылку (ассет) на картинку — при запросе которой сервис Imager на лету создаст сжатую миниатюру и вернет пользователю.
Исходник: example.com/my_image.gif (не обязательно должен быть доступен из web)
Ассет на миниатюру: example.com/my_image/DqcDCgCWSwoAlg.webp
Для запуска Imager можно использовать Docker. Воспользуйтесь следующими командами:
docker run -d -p 80:80 --volume ".:/app/example:rw" altrap/imager:v0.0.2
services:
imager:
image: altrap/imager:v0.0.2
restart: always
stop_signal: INT
stop_grace_period: 5s
ports:
- 80:80
- 443:443
volumes:
- ./:/app/example:rw
working_dir: /app
networks:
- default
Примечание: Настройки микро-сервиса можно указать в файле
setting.yaml
. Вы можете переопределить настройки, создав файлsetting-local.yaml
рядом с основным файлом конфигурации.
Если вы хотите использовать Nginx для проксирования запросов, выполните следующие шаги.
docker run -d -p 8181:80 --volume ".:/app/example:rw" --restart=always altrap/imager:v0.0.2
Файлы должны быть доступны для Nginx. Если файл не существует, запрос будет перенаправлен на микро-сервис, который создаст превью изображения.
Пример конфигурации для Nginx:
server {
# ...
# Обработка картинок: если файл не существует, проксируем запрос на Imager
location ~ \.(jpg|jpeg|gif|png|apng|jpe|jif|jfif|jfi|webp|avif|heif|heic)$ {
try_files $uri @imager;
}
location @imager {
proxy_pass http://imager$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# ...
}
upstream imager {
server http://127.0.0.1:8181;
}
Примечание: Imager можно использовать как самостоятельный сервер. Для этого необходимо установить зависимости:
Вы можете использовать различные языки программирования для работы с Imager.
Для установки клиента Golang:
go get github.com/pkg-ru/imager-client
Для установки клиента PHP:
composer require pkg-ru/imager-client
Для установки клиента JavaScript (или TypeScript):
npm i imager-client
Для установки клиента Python:
pip install imager-client