Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​В одной из заметок затрагивал тему создания скриншотов сайтов через консоль сервера. Мне посоветовали для этого готовый Docker контейнерна базе Google Puppeteer - Screenshoter. Я его попробовал. Сделано очень удобно и функционально. Идея инструмента следующая - запускаете в Docker контейнере софт, который слушает tcp порт. Шлём к нему на API запросы с параметрами и получаем результат. Самый простой случай выглядит вот так: # docker run -d --restart always \ -p 8080:8080 \ --name screenshoter \ mingalevme/screenshoter После запуска, можно сделать запрос к сервису: # curl "http://localhost:8080/screenshot?url=https://ya.ru" > ~/scrshot.png Скриншот сайта будет в файле ~/scrshot.png. Сервис может принимать множество параметров. Все они описаны в репозитории. Вот пример с указанием расширения экрана: # curl "http://localhost:8080/screenshot?url=https://ya.ru&viewport-width=1920&viewport-height=1080" > ~/scrshot.png В таком режиме можно запустить где-то контейнер и обращаться к нему по мере необходимости. Очень просто всё это связать с любой системой мониторинга на базе обычных вебхуков. Я немного покопался в репозитории и увидел там docker-compose.yml, где в составе помимо контейнера с Screenshoter есть Nginx со своим конфигом, который все запросы проксирует скриншотеру. Не сразу понял, зачем это вообще нужно, но в итоге запустил всё у себя и разобрался. Можно поднять эти контейнеры и обращаясь к nginx через браузер, видеть скриншот сразу в нём же. Запустил вот такой compose: version: "3.1" services:  screenshoter-app:   image: mingalevme/screenshoter   restart: always  screenshoter-nginx:   image: nginx:alpine   ports:    - "80:80"   volumes:    - ./screenshoter.nginx.conf:/etc/nginx/conf.d/default.conf    - "/var/log/nginx:/var/log/nginx"    - "/var/cache/nginx:/var/cache/nginx"    - "/dev/null:/var/cache/screenshoter"   depends_on:    - screenshoter-app После этого в браузере перешёл по url: http://10.20.1.16/screenshot?url=https://ya.ru&viewport-width=1920&viewport-height=1080 и получил в браузере скриншот сайта. У Screenshoter много параметров. Он умеет в том числе и скролить. Можно упростить и автоматизировать создание скриншотов. Сервис очень понравился и показался полезным, так что решил рассказать вам о нём. Запустив его у себя, можно упростить и какое-то личное применение. Например, настроить шаблон для скриншотов сайтов и использовать его - какую-то статью заскриншотил, перевёл в pdf и сохранил в директории, которая с Яндекс.Диском синхронизируется. Исходники - https://github.com/mingalevme/screenshoter DockerHub - hub.docker.com/r/minga…enshoter #разное