Docker в Inquir: функции без Dockerfile, приложения — с ним

Каждая функция работает в своём Docker-контейнере, который собирается из package.json, requirements.txt или go.mod, — для небольшого обработчика Dockerfile поддерживать не нужно. Если Dockerfile или образ у вас уже есть, разверните его как контейнерное приложение с релизами, откатом, томами и приватной сетью. HTTP-эндпоинты, вебхуки и пайплайны с расписаниями и фоновыми запусками живут в том же рабочем пространстве.

Обновлено: 2026-10-26

  • Docker-изоляция на функцию с управляемыми базовыми образами Node.js 22, Python 3.12 и Go 1.22
  • Функциям Dockerfile не нужен; контейнерные приложения собираются из вашего Dockerfile или запускают ваш образ
  • Нативные модули и CGO из inquir.yaml — без ограничений edge-изолятов
  • Общие функции для HTTP, вебхуков и пайплайнов с расписаниями и асинхронными запусками

Почему «Docker + бессерверные функции» обычно означает операционную работу

Команды, которым нужна Docker-изоляция для небольшого обработчика, часто оказываются на контейнерном сервисе — ECS Fargate, Cloud Run, Fly Machines или Railway, — где даже одному HTTP-обработчику нужны Dockerfile или конфиг buildpack, загрузка образов, проверки работоспособности и настройка ingress, прежде чем он увидит трафик.

Cron-задачи, вебхуки и фоновые обработчики часто становятся отдельными Docker-сервисами со своими процессами деплоя, секретами и мониторингом — даже когда вся бизнес-логика умещается в один HTTP-обработчик.

Чего не хватает самодельному Docker

Dockerfile на каждый микроэндпоинт операционно не масштабируется: сканирование образов на CVE, обновления базовых образов и подбор реплик становятся еженедельной рутиной.

Edge-изоляты избавляют от Docker-операций, но запрещают нативные модули, дочерние процессы и большинство сценариев с приватной сетью — для всего тяжелее маршрутизации нужна вторая платформа.

Два пути с Docker в одном рабочем пространстве

Inquir собирает контейнер на функцию из управляемых образов среды выполнения. Вы отправляете код обработчика и манифесты зависимостей; платформа собирает контейнер, запускает его по требованию и подключает маршруты шлюза или шаги пайплайна. Для регулярной работы настраивается расписание пайплайна.

Тёплые контейнеры по желанию держат прогретые Docker-слоты под постоянный трафик. Та же граница контейнера обслуживает HTTP-вызовы через шлюз, задачи по расписанию и асинхронную передачу — без своего парка контейнеров и панели управления кластером.

Если сервису нужен собственный Dockerfile — веб-приложению, фоновому обработчику с системными пакетами, базе данных, — разверните его как контейнерное приложение: inquir apps deploy соберёт Dockerfile на платформе или выпустит релиз из вашего образа, с релизами, закреплёнными по digest, проверкой работоспособности, откатом, томами и приватным адресом .apps.internal.

Что входит в управляемый Docker в Inquir

Управляемые образы для функций

Базовые образы Node.js 22, Python 3.12 и Go 1.22 поддерживает платформа. Зависимости добавляются в package.json, requirements.txt или go.mod — без блоков FROM/WORKDIR/RUN для стандартных функций.

Нативные зависимости из inquir.yaml

sharp, bcrypt, numpy, pandas и CGO-пакеты объявляются в inquir.yaml и ставятся при деплое: полноценный Linux userspace без собственного пайплайна сборки образов.

Шлюз и пайплайны в одном каталоге

HTTP-маршруты, вебхуки и шаги пайплайнов ссылаются на одни и те же ID функций. Расписания настраиваются у пайплайнов; все вызовы используют общую модель секретов и историю выполнения.

Тёплые пулы по желанию

Включайте тёплые контейнеры, когда холодный старт Docker заметен на оживлённых маршрутах. Настраивайте глубину пула и таймауты простоя по замеренным p95/p99, а не по догадкам.

Ваш Dockerfile — контейнерное приложение

Сервисы со своим Dockerfile или образом работают как контейнерные приложения: релизы с проверкой работоспособности, откат, тома, шаблоны Postgres и Redis и приватная сеть рядом с вашими функциями.

Как выпускать функции в Docker-контейнерах в Inquir

1

Обработчик и манифест

Напишите обработчик на Node.js, Python или Go и объявите зависимости в стандартном манифесте этой среды выполнения — на стандартном пути Dockerfile не нужен.

2

Развёртывание через платформу

Разворачивайте из браузерной IDE или CLI. Inquir соберёт образ контейнера функции из управляемой базы и вашего набора зависимостей.

3

Маршруты и шаги пайплайна

Привяжите HTTP-пути на шлюзе, cron-выражения в пайплайнах или асинхронную передачу после вебхука — одна и та же функция в Docker-контейнере обслуживает каждую точку входа.

Для функции: манифест зависимостей вместо Dockerfile

Для большинства функций зависимости объявляются в манифесте языка. Платформа собирает контейнер, а вы занимаетесь логикой обработчика и маршрутизацией на шлюзе. Сервис со своим Dockerfile разворачивается как контейнерное приложение.

package.json (Node.js — без Dockerfile)
{
  "name": "resize-api",
  "type": "module",
  "dependencies": {
    "sharp": "^0.33.0"
  }
}
api/resize.mjs
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 в Inquir

Когда это уместно

  • Нужны Docker-изоляция и нативные зависимости без поддержки Dockerfile и пайплайнов образов на каждый эндпоинт.
  • HTTP API, вебхуки и пайплайны с расписаниями и фоновыми запусками должны использовать один каталог функций без отдельных Docker-сервисов.

Когда лучше выбрать другое

  • Функции нужны произвольные пакеты ОС или собственный базовый образ — разверните этот код как контейнерное приложение из своего Dockerfile.
  • Субмиллисекундная задержка на edge по всему миру для крошечных обработчиков на чистом JS — под такой профиль лучше подходят V8-изоляты на edge.

Частые вопросы

Нужно ли писать Dockerfile на каждую функцию?

Для стандартных обработчиков на Node.js, Python и Go — нет. Объявите зависимости в package.json, requirements.txt или go.mod; платформа соберёт контейнер из управляемых образов. Если нужен собственный образ, разверните его как контейнерное приложение: inquir apps deploy соберёт ваш Dockerfile на платформе или выпустит релиз из готового образа.

Чем это отличается от ECS Fargate или Cloud Run?

Там вы сами пакуете контейнеры и связываете их с балансировщиками и планировщиками. Inquir объединяет сборку контейнеров, маршрутизацию шлюза, вебхуки и пайплайны с расписаниями и историей запусков в одной управляемой платформе.

У каждой функции свой Docker-контейнер?

Да — у каждой функции изолированный контейнер со своим набором зависимостей. Это ограничивает зону отказа и избавляет от конфликтов общего интерпретатора между несвязанными обработчиками.

Как уменьшить холодный старт Docker?

Включите тёплые контейнеры, чтобы держать пул прогретых Docker-слотов для выбранных функций. Замерьте хвост задержки на реалистичных телах запросов, прежде чем полагаться только на прогрев.

Разверните функцию в Docker-контейнере без Dockerfile

Объявите зависимости, разверните функцию и подключите маршрут на шлюзе — в одной сессии.