Этот проект показывает, как запускать небольшие Node.js-утилиты полностью внутри Docker, без установки Node.js и node_modules на хост-машину.
Контейнер принимает путь к картинке, ресайзит и конвертирует в другой формат, сохраняет результат в volume и автоматически удаляется.
- Ресайз изображения (ширина, высота — опционально)
- Конвертация по расширению выходного файла (
jpg,png,webp, etc.) - Работа строго внутри
Docker - Обмен файлами через
volume(-v ./images:/data) - Контейнер запускается → обрабатывает → завершается → удаляется
Dockerfile
package.json
index.js
images/
docker build -t img-tool .
Пример: ресайз до ширины 1024 px и конвертация в .jpg.
docker run --rm \
-v "$PWD/images:/data" \
img-tool \
/data/input.jpg \
/data/output.jpg \
1024
--rm— удалить контейнер после завершения-v "$PWD/images:/data"— примонтировать локальную папку images в контейнер как /data/data/input.jpg— входной файл внутри контейнера/data/output.jpg— куда сохранить результат1024— новая ширина (высота подберётся автоматически)
Готовый файл появится в ./images/output.jpg на хост-машине.
Конвертация без ресайза
docker run --rm -v "$PWD/images:/data" img-tool /data/input.jpg /data/out.webp
Ресайз только по ширине
docker run --rm -v "$PWD/images:/data" img-tool /data/input.jpg /data/out.png 800
Node.jsне нужно устанавливать на хост-машину- Никаких глобальных
node_modules - Лёгко обновлять, переносить и запускать на любой машине
- Контейнер работает как
CLI-утилита