Docker serverless-функции без написания Dockerfile
Каждая функция работает в своём Docker-контейнере, но вместо Dockerfile, реестра образов и YAML оркестратора вы задаёте package.json, requirements.txt или go.mod. HTTP-эндпоинты, вебхуки и пайплайны с расписаниями и фоновыми запусками доступны в одном serverless control plane.
Обновлено: 2026-06-28
- Docker-изоляция на функцию с managed-образами Node.js 22, Python 3.12 и Go 1.22
- Без Dockerfile, fly.toml и Kubernetes-манифестов для типовых обработчиков
- Нативные модули и CGO через слои — без ограничений edge-изолятов
- Общие функции для HTTP, вебхуков и пайплайнов с расписаниями и асинхронными запусками
Кратко
Суть ответа
Docker serverless-функции без написания Dockerfile. Inquir собирает контейнер на функцию из managed-образов рантайма. Вы отправляете код обработчика и манифесты зависимостей; платформа собирает контейнер, размещает его по требованию и подключает маршруты шлюза или шаги пайплайна. Для регулярной работы настраивается расписание пайплайна.
Когда подходит
- Нужны Docker-изоляция и нативные зависимости без поддержки Dockerfile и пайплайнов образов на каждый эндпоинт.
- HTTP API, вебхуки и пайплайны с расписаниями и фоновыми запусками должны использовать один каталог функций без отдельных Docker-сервисов.
На что обратить внимание
- Dockerfile на каждый микроэндпоинт операционно не масштабируется: сканирование образов на CVE, обновления базовых образов и подбор реплик становятся еженедельной рутиной.
- Edge-изоляты избавляют от Docker-операций, но запрещают нативные модули, сабпроцессы и большинство сценариев с приватной сетью — для всего тяжелее маршрутизации нужна вторая платформа.
Нагрузка и где ломается
Почему «Docker + serverless» обычно означает операционную работу
Команды, которым нужна Docker-изоляция, часто оказываются на ECS Fargate, Cloud Run, Fly Machines или сервисах Railway — и на каждом пути нужны Dockerfile или конфиг buildpack, push образов, health-проверки и настройка ingress, прежде чем первый обработчик увидит трафик.
Cron-задачи, вебхуки и фоновые воркеры часто становятся отдельными Docker-сервисами со своими пайплайнами деплоя, секретами и мониторингом — даже когда вся бизнес-логика умещается в один HTTP-обработчик.
Компромиссы
Чего не хватает DIY Docker serverless
Dockerfile на каждый микроэндпоинт операционно не масштабируется: сканирование образов на CVE, обновления базовых образов и подбор реплик становятся еженедельной рутиной.
Edge-изоляты избавляют от Docker-операций, но запрещают нативные модули, сабпроцессы и большинство сценариев с приватной сетью — для всего тяжелее маршрутизации нужна вторая платформа.
Как помогает Inquir
Docker-изоляция с serverless-моделью деплоя
Inquir собирает контейнер на функцию из managed-образов рантайма. Вы отправляете код обработчика и манифесты зависимостей; платформа собирает контейнер, размещает его по требованию и подключает маршруты шлюза или шаги пайплайна. Для регулярной работы настраивается расписание пайплайна.
Тёплые контейнеры опционально держат прогретые Docker-слоты под постоянный трафик. Та же граница контейнера обслуживает HTTP-вызовы через шлюз, задачи по расписанию и асинхронную передачу — без своего флота контейнеров и control plane кластера.
Что вы получаете
Что входит в managed Docker serverless
Managed-образы вместо Dockerfile
Базовые образы Node.js 22, Python 3.12 и Go 1.22 поддерживает платформа. Зависимости добавляются в package.json, requirements.txt или go.mod — без блоков FROM/WORKDIR/RUN для стандартных функций.
Слои для нативных зависимостей
sharp, bcrypt, numpy, pandas и CGO-пакеты подключаются как слои, которые монтируются в контейнер при запуске: полноценный Linux userspace без собственного пайплайна сборки образов.
Шлюз и пайплайны в одном каталоге
HTTP-маршруты, вебхуки и шаги пайплайнов ссылаются на одни и те же ID функций. Расписания настраиваются у пайплайнов; все вызовы используют общую модель секретов и историю выполнения.
Опциональные тёплые пулы
Включайте тёплые контейнеры, когда холодный старт Docker заметен на оживлённых маршрутах. Настраивайте глубину пула и таймауты простоя по замеренным p95/p99, а не по догадкам.
Что дальше
Как поставлять Docker serverless-функции в Inquir
Обработчик и манифест
Напишите обработчик на Node.js, Python или Go и объявите зависимости в стандартном манифесте этого рантайма — на стандартном пути Dockerfile не нужен.
Деплой через платформу
Деплойте из браузерной IDE или CLI. Inquir соберёт образ контейнера функции из managed-базы и вашего замыкания зависимостей.
Маршруты и шаги пайплайна
Привяжите HTTP-пути на шлюзе, cron-выражения в пайплайнах или асинхронную передачу после вебхука — одна и та же Docker-функция обслуживает каждую точку входа.
Пример кода
Манифест зависимостей вместо Dockerfile
Для большинства функций зависимости объявляются в манифесте языка. Платформа собирает контейнер, а вы занимаетесь логикой обработчика и маршрутизацией на шлюзе.
{ "name": "resize-api", "type": "module", "dependencies": { "sharp": "^0.33.0" } }
import sharp from 'sharp'; export async function handler(event) { const input = Buffer.from(event.body ?? '', 'base64'); const out = await sharp(input).resize(320).jpeg().toBuffer(); return { statusCode: 200, headers: { 'Content-Type': 'image/jpeg' }, body: out.toString('base64'), isBase64Encoded: true, }; }
Когда подходит
Когда выбирать Docker serverless в Inquir
Когда это уместно
- Нужны Docker-изоляция и нативные зависимости без поддержки Dockerfile и пайплайнов образов на каждый эндпоинт.
- HTTP API, вебхуки и пайплайны с расписаниями и фоновыми запусками должны использовать один каталог функций без отдельных Docker-сервисов.
Когда лучше выбрать другое
- Нужны произвольные пакеты ОС или полностью кастомный базовый образ на каждый деплой — managed-рантаймы заточены под типовой случай, а не под сборку своих дистрибутивов.
- Субмиллисекундная задержка на edge по всему миру для крошечных обработчиков на чистом JS — под такой профиль лучше подходят V8-изоляты на edge.
Частые вопросы
Частые вопросы
Нужно ли писать Dockerfile на каждую функцию?
Для стандартных обработчиков на Node.js, Python и Go — нет. Объявите зависимости в package.json, requirements.txt или go.mod; платформа соберёт контейнер из managed-образов. Свой Dockerfile — не путь деплоя по умолчанию в Inquir.
Чем это отличается от ECS Fargate или Cloud Run?
Там вы сами пакуете контейнеры и связываете их с балансировщиками и планировщиками. Inquir объединяет сборку контейнеров, маршрутизацию шлюза, вебхуки и пайплайны с расписаниями и историей запусков в одном serverless control plane.
У каждой функции свой Docker-контейнер?
Да — у каждой функции изолированный контейнер со своим замыканием зависимостей. Это ограничивает зону отказа и избавляет от конфликтов общего интерпретатора между несвязанными обработчиками.
Как уменьшить холодный старт Docker?
Включите тёплые контейнеры, чтобы держать пул прогретых Docker-слотов для выбранных функций. Замерьте хвост задержки на реалистичных телах запросов, прежде чем полагаться только на прогрев.