Руководства по развёртыванию, секретам, доменам и управлению контейнерами.

Docker и compose

Как агент собирает и запускает приложение: compose, Dockerfile, порт и тома. · обновлено 2026-10-06

Агент работает через Docker Compose plugin и всегда вызывает его с префиксом проекта apppilot-<приложение>, поэтому контейнеры разных приложений на одной машине не пересекаются.

Способ сборки compose

В репозитории должен быть docker-compose.yml или compose.yml. Требования к файлу:

services:
  web:
    build: .                # или image: для готового образа
    ports:
      - "8080:80"          # порт наружу: приложение откроется по http://<адрес машины>:8080
    environment:
      - DATABASE_URL=${DATABASE_URL}
  • порт публикуйте без адреса (8080:80) — тогда он доступен по адресу машины; привязка к 127.0.0.1 оставит приложение доступным только внутри машины;
  • данные (тома) храните в каталогах внутри проекта либо в именованных томах;
  • секреты не пишите в файл: они доступны как переменные окружения (см. ниже).

Способ сборки dockerfile

Если compose-файла нет, агент собирает образ из Dockerfile в корне репозитория и запускает один контейнер. Используйте это для простых сервисов и воркеров без базы.

Обновление образа

Команда Обновить образ выполняет docker compose pull --ignore-pull-failures. Если образ собирается локально (в файле есть build: и image:), неудачный pull — нормальная ситуация, и агент не считает её ошибкой.

Логи и отладка

  • журнал приложения — вывод последних строк docker compose logs;
  • статус — какие контейнеры подняты, их состояние и время работы;
  • health — проверка доступности приложения;
  • интерактивный терминал и загрузка файлов — в разделе Приложения (этап P5).

Тома и права

Каталог проекта принадлежит пользователю, от которого работает агент, а контейнеры запускаются через Docker. Если приложение пишет в примонтированный каталог, укажите нужного пользователя в user: сервиса или используйте именованные тома — это избавляет от ошибок прав.