---
title: Docker Compose
description: Запустите Human Plugin на одном хосте с помощью Docker Compose с вашей базой данных PostgreSQL.
canonical: https://developer.unico.io/ru/human-plugin/self-hosting/docker-compose
locale: ru
generated_by: markdown-export
---

# Docker Compose

Один контейнер Human Plugin на одном хосте, подключённый к вашей базе данных PostgreSQL.

## Требования

- Docker Engine 24 или новее с Docker Compose v2.
- База данных PostgreSQL, выделенная для Human Plugin и доступная с хоста. См. [Требования и доступ](/ru/human-plugin/get-started/prerequisites).
- Учётные данные реестра и ключ доступа от Unico.

## 1. Войдите в реестр

Один раз на каждом хосте. Docker сохраняет учётные данные в `~/.docker/config.json`.

```bash
echo "<token>" | docker login pkg.unico.run -u <username> --password-stdin
```

## 2. Задайте настройки

Создайте каталог для Human Plugin и файл `.env`, доступный для чтения только владельцу:

```bash
mkdir -p /opt/human-plugin && cd /opt/human-plugin
```

```bash title=".env"
HUMAN_API_ACCESS_KEY=<your access key>
POSTGRES_ADDRESS_HOST=<database host>
POSTGRES_USER=human_plugin
POSTGRES_PASSWORD=<database password>
```

```bash
chmod 600 .env
```

Добавляйте `POSTGRES_ADDRESS_PORT`, `POSTGRES_DATABASE` или `POSTGRES_SSL_MODE` только если ваша база данных отличается от значений по умолчанию из раздела [Конфигурация](/ru/human-plugin/self-hosting/configuration). Никогда не добавляйте файл `.env` в систему контроля версий.

## 3. Создайте `compose.yaml`

```yaml title="compose.yaml"
services:
  human-plugin:
    image: pkg.unico.run/human-plugin-api:latest
    pull_policy: always
    restart: unless-stopped
    stop_grace_period: 60s
    env_file: .env
    ports:
      - "127.0.0.1:8080:8080"
```

- **`ports`:** публикуйте порт только на `127.0.0.1` или на приватном интерфейсе, но никогда на `0.0.0.0`. У Human Plugin нет собственной аутентификации: см. [Сеть и безопасность](/ru/human-plugin/self-hosting/networking-and-security).
- **`stop_grace_period: 60s`:** при остановке Human Plugin ждёт до 55 секунд завершения обрабатываемых запросов. Более короткий период ожидания может прервать создание процесса.
- **`pull_policy: always`:** каждый `up` проверяет наличие последнего образа, поэтому вы всегда работаете на самом свежем релизе.

## 4. Запустите

```bash
docker compose up -d
```

```bash
curl --fail http://127.0.0.1:8080/health/ready
```

Направляйте трафик в Human Plugin только после того, как `/health/ready` ответит `200`. Затем выполните к нему запрос на создание из [Быстрого старта](/ru/human-plugin/get-started/quickstart#3-create-a-process).

## Логи и состояние

```bash
docker compose ps
```

```bash
docker compose logs -f human-plugin
```

Успешный запуск заканчивается строкой `human plugin listening`. Полный лог запуска см. в разделе [Работоспособность и мониторинг](/ru/human-plugin/self-hosting/health-and-monitoring#logs). Если контейнер перезапускается в цикле, причина указана в логе: см. [Устранение неполадок](/ru/human-plugin/additional-resources/troubleshooting).

## Обновление

```bash
docker compose pull && docker compose up -d
```

Compose заменяет контейнер только если образ изменился. О том, что проверить после обновления, см. [Эксплуатация](/ru/human-plugin/self-hosting/operations).

## Остановка

```bash
docker compose down
```

Ваши данные находятся в вашей базе данных PostgreSQL, поэтому остановка или удаление контейнера ничего не теряет.