README: раздел про развёртывание в Portainer (deploy-portainer)

This commit is contained in:
2026-08-25 22:30:07 +07:00
parent 5b0f8a8f73
commit cfa919a435

View File

@@ -112,6 +112,36 @@ docker run -d --name kadr-photo-editor -p 3000:3000 ^
3. После регистрации нажмите «Run workflow» — образ соберётся Buildx'ом и
уедет в registry.
## Развёртывание в Portainer (workflow deploy-portainer)
Workflow `.gitea/workflows/deploy.yml` разворачивает сервис на
[Portainer](https://ptr.byte-mate.ru): создаёт или обновляет стек
`photo-editor` из `deploy/docker-compose.yml` через API Portainer.
Запуск: **Actions → Run workflow** (workflow **deploy-portainer**).
Требования:
1. **Секрет `PORTAINER_API_KEY`** (Settings → Actions → Secrets) — API-ключ
Portainer: **Account → API keys → Add key**. Внимание: Portainer 2.39
принимает ключ только через заголовок `X-API-Key` (не Bearer) — workflow
это уже учитывает.
2. **Переменная `PORTAINER_ENDPOINT_ID`** (Settings → Actions → Variables) —
id окружения Docker в Portainer. Если не задана, берётся первый из
`/api/endpoints`. Сейчас endpoint — `server1`, id **3**.
3. **Registry в Portainer** (Registries → Add registry): URL
`git.byte-mate.ru`, username `Coder`, пароль — Personal Access Token.
Без этого хост не сможет стянуть образ (registry приватный, анонимный
pull возвращает 401).
4. На хосте Portainer должен существовать каталог `/root/.codex` с
аутентификацией Codex (auth.json + config.toml) — он монтируется в
контейнер. Альтернатива — переменная `OPENAI_API_KEY` в
`deploy/docker-compose.yml`.
Поведение: если стека нет — создаёт; если есть — обновляет с
`RepullImageAndRedeploy=true` (всегда перетягивает свежий образ). Контейнер
`kadr-photo-editor` слушает порт **3000** на хосте Portainer; история версий
хранится в именованном томе `kadr-history` и переживает обновления.
## Тест скорости моделей Codex (ветка testing)
Сервер умеет переопределять модель и уровень рассуждений через переменные