diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index ed3e05a..d1f7233 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -18,6 +18,9 @@ on: env: IMAGE_NAME: dub-ai + # Публичный адрес реестра (HTTPS). Нельзя брать из GITHUB_SERVER_URL: внутри раннера это внутренний + # адрес Gitea (http://192.168.x.x:3000), у него нет HTTPS. Переопределяется переменной REGISTRY_HOST. + REGISTRY_HOST: ${{ vars.REGISTRY_HOST || 'git.shx.one' }} jobs: build: @@ -52,7 +55,7 @@ jobs: - name: Теги образа id: meta run: | - REGISTRY="${GITHUB_SERVER_URL#*://}" # хост Gitea без схемы + REGISTRY="${REGISTRY_HOST}" REPO="$(echo "${GITHUB_REPOSITORY}" | tr '[:upper:]' '[:lower:]')" IMAGE="${REGISTRY}/${REPO}/${IMAGE_NAME}" TAGS="${IMAGE}:sha-${GITHUB_SHA::8}" diff --git a/docs/docker.md b/docs/docker.md index 22620ca..11fd48b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -203,8 +203,11 @@ Workflow `.gitea/workflows/docker.yml` собирает образ и публи | `REGISTRY_USER` | необязательно: владелец токена; по умолчанию — владелец репозитория (`denozord`) | | `MODELS_URL` | необязательно: ссылка на `models-bundle.tar.gz`; нет — образ без моделей | -3. Реестр контейнеров Gitea доступен по HTTPS. Если Gitea по HTTP, добавьте её адрес в - `insecure-registries` Docker на раннере и на VPS (`/etc/docker/daemon.json`). +3. Адрес реестра — `git.shx.one` (HTTPS), он задан в workflow (`REGISTRY_HOST`); другой можно указать + переменной репозитория `REGISTRY_HOST`. Адрес берётся не из `GITHUB_SERVER_URL`: внутри раннера это + внутренний `http://192.168.x.x:3000` без HTTPS, и `docker login` падает с «server gave HTTP response + to HTTPS client». Если реестр всё же по HTTP, добавьте его в `insecure-registries` Docker + (`/etc/docker/daemon.json`). ### Что делает workflow @@ -260,6 +263,7 @@ Workflow `.gitea/workflows/docker.yml` собирает образ и публи | 401 | не передан токен или он отличается от `DUB_API_TOKEN` | | Контейнер `unhealthy` в первые минуты | модель ещё грузится; `docker logs dub-ai`. Если не проходит — не хватает памяти (`docker stats`) | | CI: `Cannot connect to the Docker daemon` | у раннера нет доступа к Docker (см. «Что настроить один раз») | +| CI: `server gave HTTP response to HTTPS client` | workflow взял внутренний адрес Gitea; должен быть `REGISTRY_HOST` = `git.shx.one` (уже так в workflow) | | CI: `unauthorized` при push | у `ACTION_PAT` нет `write:package` или токен принадлежит не владельцу/участник пространства имён репозитория | | CI: образ без моделей, хотя ждали с ними | секрет `MODELS_URL` пуст или шаг скачивания пропущен — смотрите лог шага «Модели» |