Skip to content

Задачи ​

Docker ​

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

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

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

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

НаименованиеТипОбязательное
imagestringДа
containerNamestringНет
commandstringНет
argumentsarrayНет
portsarrayНет
volumesarrayНет
envПеременные окруженияНет
envFilearrayНет
networkstringНет
autoRemovebooleanНет
userstringНет
workdirstringНет
entrypointstringНет
platformstringНет
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"
}

platform ​

Тип: string

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

Операционная система/архитектура для контейнера. Например, "linux/amd64", "linux/arm64", "darwin/arm64" и т.д.

Пример:

json
{
  "platform": "linux/amd64"
}

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Переменные окруженияНет
envFilearrayНет
networksarrayНет
dependsOnarrayНет
restartstringНет
userstringНет
workdirstringНет
hostnamestringНет
entrypointstring | arrayНет
platformstringНет
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"
  }
}

envFile ​

Тип: array

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

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

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

Пример:

json
{
  "envFile": [".env", ".env.local"]
}
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"]
}
platform ​

Тип: string

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

Операционная система/архитектура для контейнера. Например, "linux/amd64", "linux/arm64", "darwin/arm64" и т.д.

Пример:

json
{
  "platform": "linux/amd64"
}
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"
  }
}