Skip to content

Задачи

Docker

Иcпользует Docker для запуска.

Конфигурация Docker задачи, отличается от конфигурации обычной задачи типом и опциями.

json
{
  "type": "docker",
  "options": {
    // опции Docker задачи
  }
}

Свойства опций

НаименованиеТипОбязательное
imagestringДа
containerNamestringНет
commandstringНет
argumentsarrayНет
portsarrayНет
volumesarrayНет
envПеременные окруженияНет
envFilearrayНет
networkstringНет
autoRemovebooleanНет
userstringНет
workdirstringНет
entrypointstringНет
privilegedbooleanНет
restartstringНет
memorystringНет
cpusstringНет
hostnamestringНет
stopSignalstringНет
stopTimeoutnumberНет
pullstringНет
ttlnumberНет
logЛогирование задачиНет

Описание свойств

image

Тип: string

Обязательное: Да

Имя Docker образа для запуска контейнера.

Пример:

json
{
  "image": "node:18-alpine"
}

containerName

Тип: string

Обязательное: Нет

Имя контейнера. Если не указано, Docker автоматически сгенерирует имя.

Пример:

json
{
  "containerName": "my-app-container"
}

command

Тип: string

Обязательное: Нет

Команда для выполнения в контейнере. Переопределяет CMD из Dockerfile.

Пример:

json
{
  "command": "npm start"
}

arguments

Тип: array

Обязательное: Нет

Элементы массива: string

Массив аргументов для команды.

Пример:

json
{
  "arguments": ["--port", "3000", "--host", "0.0.0.0"]
}

ports

Тип: array

Обязательное: Нет

Элементы массива: string

Массив проброса портов в формате "host:container".

Пример:

json
{
  "ports": ["8080:80", "3000:3000"]
}

volumes

Тип: array

Обязательное: Нет

Элементы массива: string

Массив монтирования томов в формате "host:container" или именованных томов.

Пример:

json
{
  "volumes": ["./src:/app/src", "node_modules:/app/node_modules"]
}

env

Тип: Переменные окружения

Обязательное: Нет

Переменные окружения для контейнера.

Пример:

json
{
  "env": {
    "NODE_ENV": "production",
    "API_ADDRESS": "localhost:3000"
  }
}

envFile

Тип: array

Обязательное: Нет

Элементы массива: string

Массив путей к файлам с переменными окружения. Файлы должны содержать переменные в формате KEY=VALUE.

Пример:

json
{
  "envFile": [".env", ".env.local"]
}

network

Тип: string

Обязательное: Нет

Имя Docker сети для подключения контейнера.

Пример:

json
{
  "network": "my-network"
}

autoRemove

Тип: boolean

Обязательное: Нет

Автоматически удалять контейнер после его остановки.

Пример:

json
{
  "autoRemove": true
}

user

Тип: string

Обязательное: Нет

Пользователь в формате "user" или "user:group".

Пример:

json
{
  "user": "1000:1000"
}

workdir

Тип: string

Обязательное: Нет

Рабочая директория внутри контейнера.

Пример:

json
{
  "workdir": "/app"
}

entrypoint

Тип: string

Обязательное: Нет

Точка входа для контейнера. Переопределяет ENTRYPOINT из Dockerfile.

Пример:

json
{
  "entrypoint": "/bin/sh"
}

privileged

Тип: boolean

Обязательное: Нет

Запустить контейнер в привилегированном режиме.

Пример:

json
{
  "privileged": false
}

restart

Тип: string

Обязательное: Нет

Допустимые значения: "no", "always", "on-failure", "unless-stopped"

Политика перезапуска контейнера:

  • "no" - не перезапускать контейнер автоматически
  • "always" - всегда перезапускать контейнер при остановке
  • "on-failure" - перезапускать только при ошибке (ненулевой код выхода)
  • "unless-stopped" - всегда перезапускать, кроме случаев когда контейнер был остановлен вручную

Пример:

json
{
  "restart": "unless-stopped"
}

memory

Тип: string

Обязательное: Нет

Ограничение памяти для контейнера. Можно указать в байтах или с суффиксами k, m, g (например, "512m", "2g").

Пример:

json
{
  "memory": "512m"
}

cpus

Тип: string

Обязательное: Нет

Ограничение количества CPU для контейнера. Можно указать дробное значение (например, "0.5", "2.0").

Пример:

json
{
  "cpus": "1.5"
}

hostname

Тип: string

Обязательное: Нет

Имя хоста для контейнера.

Пример:

json
{
  "hostname": "api-server"
}

stopSignal

Тип: string

Обязательное: Нет

Сигнал для остановки контейнера. По умолчанию используется SIGTERM.

Пример:

json
{
  "stopSignal": "SIGINT"
}

stopTimeout

Тип: number

Обязательное: Нет

Время ожидания в секундах перед принудительной остановкой контейнера. По умолчанию 10 секунд.

Пример:

json
{
  "stopTimeout": 30
}

pull

Тип: string

Обязательное: Нет

Допустимые значения: "always", "missing", "never"

Политика загрузки образа перед запуском контейнера:

  • "always" - всегда загружать образ
  • "missing" - загружать только если образ отсутствует локально
  • "never" - никогда не загружать образ

Пример:

json
{
  "pull": "missing"
}

ttl

Тип: number

Обязательное: Нет

Time To Live (время жизни) задачи в миллисекундах. Если задача выполняется дольше указанного времени, она будет принудительно остановлена.

Пример:

json
{
  "ttl": 3600
}

log

Тип: Логирование задачи

Обязательное: Нет

Настройки логирования для задачи.

Пример:

json
{
  "log": {
    "stdout": "./logs/docker-task.log"
  }
}

Docker Compose

Использует Docker Compose для запуска сервисов.

Конфигурация Docker Compose задачи, отличается от конфигурации обычной задачи типом и опциями.

json
{
  "type": "docker-compose",
  "options": {
    // опции Docker Compose задачи
  }
}

Свойства опций

НаименованиеТипОбязательное
servicesobjectДа
networksobjectНет
volumesobjectНет
ttlnumberНет
logЛогирование задачиНет

Описание свойств

services

Тип: object

Обязательное: Да

Объект, содержащий определения сервисов. Ключи объекта - имена сервисов, значения - конфигурации сервисов.

Пример:

json
{
  "services": {
    "web": {
      "image": "nginx:alpine",
      "ports": ["8080:80"]
    },
    "api": {
      "image": "node:18-alpine",
      "command": "npm start"
    }
  }
}
Свойства сервиса
НаименованиеТипОбязательное
imagestringДа
containerNamestringНет
commandstring | arrayНет
portsarrayНет
volumesarrayНет
environmentПеременные окруженияНет
networksarrayНет
dependsOnarrayНет
restartstringНет
userstringНет
workdirstringНет
hostnamestringНет
entrypointstring | arrayНет
privilegedbooleanНет
exposearrayНет
extraHostsarrayНет
stopSignalstringНет
stopGracePeriodstringНет
healthcheckobjectНет
Описание свойств сервиса
image

Тип: string

Обязательное: Да

Имя Docker образа.

Пример:

json
{
  "image": "node:18-alpine"
}
containerName

Тип: string

Обязательное: Нет

Имя контейнера. Если не указано, Docker автоматически сгенерирует имя.

Пример:

json
{
  "containerName": "my-app-container"
}
command

Тип: string | array

Обязательное: Нет

Команда для выполнения в контейнере.

Пример (строка):

json
{
  "command": "python ./server.py"
}

Пример (массив):

json
{
  "command": ["python", "./server.py"]
}
ports

Тип: array

Обязательное: Нет

Элементы массива: string

Массив проброса портов в формате "host:container".

Пример:

json
{
  "ports": ["8080:80", "3000:3000"]
}
volumes (service)

Тип: array

Обязательное: Нет

Элементы массива: string

Массив монтирования томов в формате "host:container" или именованных томов.

Пример:

json
{
  "volumes": ["./src:/app/src", "node_modules:/app/node_modules"]
}
environment

Тип: Переменные окружения

Обязательное: Нет

Переменные окружения для контейнера.

Пример:

json
{
  "environment": {
    "NODE_ENV": "production",
    "API_ADDRESS": "localhost:3000"
  }
}
networks (service)

Тип: array

Обязательное: Нет

Элементы массива: string

Массив имен Docker сетей для подключения контейнера.

Пример:

json
{
  "networks": ["frontend", "backend"]
}
dependsOn

Тип: array

Обязательное: Нет

Элементы массива: string

Массив имен сервисов, от которых зависит данный сервис. Сервис будет запущен после запуска зависимостей.

Пример:

json
{
  "dependsOn": ["database", "redis"]
}
restart

Тип: string

Обязательное: Нет

Допустимые значения: "no", "always", "on-failure", "unless-stopped"

Политика перезапуска контейнера:

  • "no" - не перезапускать контейнер автоматически
  • "always" - всегда перезапускать контейнер при остановке
  • "on-failure" - перезапускать только при ошибке (ненулевой код выхода)
  • "unless-stopped" - всегда перезапускать, кроме случаев когда контейнер был остановлен вручную

Пример:

json
{
  "restart": "unless-stopped"
}
user

Тип: string

Обязательное: Нет

Пользователь в формате "user" или "user:group".

Пример:

json
{
  "user": "1000:1000"
}
workdir

Тип: string

Обязательное: Нет

Рабочая директория внутри контейнера.

Пример:

json
{
  "workdir": "/app"
}
hostname

Тип: string

Обязательное: Нет

Имя хоста для контейнера.

Пример:

json
{
  "hostname": "api-server"
}
entrypoint

Тип: string | array

Обязательное: Нет

Точка входа для контейнера.

Пример (строка):

json
{
  "entrypoint": "/bin/sh"
}

Пример (массив):

json
{
  "entrypoint": ["/bin/sh", "-c"]
}
privileged

Тип: boolean

Обязательное: Нет

Запустить контейнер в привилегированном режиме.

Пример:

json
{
  "privileged": false
}
expose

Тип: array

Обязательное: Нет

Элементы массива: string

Массив портов для экспонирования другим сервисам (без публикации на хост).

Пример:

json
{
  "expose": ["3000", "8080"]
}
extraHosts

Тип: array

Обязательное: Нет

Элементы массива: string

Массив дополнительных записей для файла /etc/hosts контейнера в формате "hostname:ip".

Пример:

json
{
  "extraHosts": ["host.docker.internal:host-gateway", "api.local:192.168.1.100"]
}
stopSignal

Тип: string

Обязательное: Нет

Сигнал для остановки контейнера. По умолчанию используется SIGTERM.

Пример:

json
{
  "stopSignal": "SIGINT"
}
stopGracePeriod

Тип: string

Обязательное: Нет

Время ожидания перед принудительной остановкой контейнера (например, "10s", "1m"). По умолчанию 10 секунд.

Пример:

json
{
  "stopGracePeriod": "30s"
}
healthcheck

Тип: object

Обязательное: Нет

Настройки проверки здоровья контейнера.

Свойства healthcheck:

НаименованиеТипОбязательное
teststring | arrayДа
intervalstringНет
timeoutstringНет
retriesnumberНет
start_periodstringНет

Пример:

json
{
  "healthcheck": {
    "test": ["CMD", "curl", "-f", "http://localhost:3000/health"],
    "interval": "30s",
    "timeout": "10s",
    "retries": 3,
    "start_period": "40s"
  }
}
test

Тип: string | array

Обязательное: Да (внутри healthcheck)

Команда для проверки здоровья. Может быть строкой или массивом строк.

Пример (строка):

json
{
  "test": "curl -f http://localhost:3000/health || exit 1"
}

Пример (массив):

json
{
  "test": ["CMD", "curl", "-f", "http://localhost:3000/health"]
}
interval

Тип: string

Обязательное: Нет

Интервал между проверками здоровья (например, "30s", "1m").

Пример:

json
{
  "interval": "30s"
}
timeout

Тип: string

Обязательное: Нет

Таймаут для проверки здоровья (например, "10s", "30s").

Пример:

json
{
  "timeout": "10s"
}
retries

Тип: number

Обязательное: Нет

Количество попыток проверки здоровья перед тем, как контейнер будет считаться нездоровым.

Пример:

json
{
  "retries": 3
}
start_period

Тип: string

Обязательное: Нет

Время инициализации контейнера перед началом проверок здоровья (например, "40s", "1m").

Пример:

json
{
  "start_period": "40s"
}

networks

Тип: object

Обязательное: Нет

Объект, содержащий определения сетей. Ключи объекта - имена сетей, значения - конфигурации сетей.

Пример:

json
{
  "networks": {
    "frontend": {},
    "backend": {}
  }
}

volumes (top)

Тип: object

Обязательное: Нет

Объект, содержащий определения именованных томов. Ключи объекта - имена томов, значения - конфигурации томов.

Пример:

json
{
  "volumes": {
    "db-data": {},
    "cache-data": {}
  }
}

ttl

Тип: number

Обязательное: Нет

Time To Live (время жизни) задачи в миллисекундах. Если задача выполняется дольше указанного времени, она будет принудительно остановлена.

Пример:

json
{
  "ttl": 3600000
}

log

Тип: Логирование задачи

Обязательное: Нет

Настройки логирования для задачи.

Пример:

json
{
  "log": {
    "stdout": "./logs/docker-compose-task.log"
  }
}