Docker и compose
Агент работает через 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: сервиса или используйте именованные тома — это избавляет от ошибок прав.