Update docker-compose.yml and documentation to use pre-built Docker image from Gitea registry. Removed local build instructions in favor of pulling the latest image. Enhanced README.md and GATEWAY_RUN.md with updated usage instructions for Docker CLI and Compose.
Publish telemt-api gateway Docker image / test (push) Successful in 25s
Publish telemt-api gateway Docker image / build-and-push (push) Successful in 28s

This commit is contained in:
Denozordec
2026-03-29 23:03:52 +07:00
parent 218fa09402
commit 073d2b2c09
3 changed files with 66 additions and 21 deletions
+36 -13
View File
@@ -6,12 +6,13 @@
2. [Требования](#требования)
3. [Минимальная конфигурация](#минимальная-конфигурация)
4. [Переменные окружения](#переменные-окружения)
5. [Сборка образа](#сборка-образа)
6. [Запуск через Docker CLI](#запуск-через-docker-cli)
7. [Запуск через Docker Compose](#запуск-через-docker-compose)
8. [Проверка](#проверка)
9. [Обновление и CI/CD](#обновление-и-cicd)
10. [Устранение неполадок](#устранение-неполадок)
5. [Готовый образ из registry](#готовый-образ-из-registry)
6. [Локальная сборка образа](#локальная-сборка-образа)
7. [Запуск через Docker CLI](#запуск-через-docker-cli)
8. [Запуск через Docker Compose](#запуск-через-docker-compose)
9. [Проверка](#проверка)
10. [Обновление и CI/CD](#обновление-и-cicd)
11. [Устранение неполадок](#устранение-неполадок)
## Назначение
@@ -80,24 +81,42 @@ servers:
| `CONFIG_PATH` | Путь к YAML внутри контейнера. По умолчанию: `/etc/telemt-gateway/config.yaml`. |
| `TELEMT_API_AUTH` | Пример: секрет для `authorization_env` в конфиге (имя может быть любым). |
## Сборка образа
## Готовый образ из registry
В каталоге репозитория:
CI публикует образ в Container Registry Gitea. Для репозитория `denozord/telemt-api` на `git.shts.su` стабильный тег:
```bash
docker pull git.shts.su/denozord/telemt-api:latest
```
Если registry **не публичный**, сначала войдите (логин — пользователь Gitea, пароль — personal access token с правом **`read:package`**):
```bash
docker login git.shts.su
```
Другие полезные теги из того же workflow: имя ветки (с `/` заменённым на `-`) и `sha-<12 символов коммита>` — см. раздел [Обновление и CI/CD](#обновление-и-cicd).
## Локальная сборка образа
Если нужно собрать образ самостоятельно из клона репозитория:
```bash
docker build -t telemt-api-gateway:local .
```
В командах `docker run` ниже вместо имени из registry подставьте `telemt-api-gateway:local`.
## Запуск через Docker CLI
Пример для Linux (подставьте путь к `config.yaml`; ниже — файл из текущего каталога):
Пример для Linux (подставьте путь к `config.yaml`; ниже — файл из текущего каталога). Используется **готовый** образ:
```bash
docker run -d --name telemt-gateway \
-p 8080:8080 \
-v "$(pwd)/config.yaml:/etc/telemt-gateway/config.yaml:ro" \
-e CONFIG_PATH=/etc/telemt-gateway/config.yaml \
telemt-api-gateway:local
git.shts.su/denozord/telemt-api:latest
```
Проверка:
@@ -118,14 +137,17 @@ docker rm telemt-gateway
## Запуск через Docker Compose
В репозитории есть [docker-compose.yml](../docker-compose.yml) и пример [config.compose.yaml](../config.compose.yaml) с `allow_all: true` и `base_url: http://host.docker.internal:9091` (Telemt на хосте; на Docker Desktop для Linux это обычно работает из коробки).
В репозитории есть [docker-compose.yml](../docker-compose.yml) и пример [config.compose.yaml](../config.compose.yaml) с `allow_all: true` и `base_url: http://host.docker.internal:9091` (Telemt на хосте; на Docker Desktop для Linux это обычно работает из коробки). Образ по умолчанию **скачивается** из registry, локальная сборка не требуется.
```bash
docker compose up -d --build
docker compose pull
docker compose up -d
docker compose logs -f gateway
docker compose down
```
Чтобы пересобрать образ из исходников вместо pull, в [docker-compose.yml](../docker-compose.yml) временно замените блок `image:` на `build: .` (и нужный тег при необходимости).
На Linux без `host.docker.internal` сделайте одно из:
- в `docker-compose.yml` для сервиса `gateway` добавьте `extra_hosts: ["host.docker.internal:host-gateway"]` (Docker Engine 20.10+);
@@ -144,7 +166,7 @@ docker compose down
## Обновление и CI/CD
- **Образ**: пересоберите тег или подтяните новый из registry, затем `docker compose up -d --build` или `docker stop` / `docker run ...` с тем же volume конфига.
- **Образ**: подтяните свежий тег (`docker pull git.shts.su/denozord/telemt-api:latest` или `docker compose pull`), пересоздайте контейнер (`docker compose up -d` или новый `docker run` с тем же volume конфига). Локальная пересборка нужна только если вы меняете Dockerfile/код и не пользуетесь CI.
- **Конфиг**: отредактируйте файл на хосте и перезапустите контейнер (шлюз не перечитывает конфиг на лету).
- **Gitea Actions**: workflow [.gitea/workflows/docker.yaml](../.gitea/workflows/docker.yaml) сначала выполняет `go mod tidy && go test ./...`, затем собирает образ через Buildx и пушит в Container Registry Gitea.
@@ -155,6 +177,7 @@ docker compose down
## Устранение неполадок
- **`docker pull`: `unauthorized` / `denied`**: выполните `docker login git.shts.su` с учётной записью Gitea и PAT с **`read:package`**.
- **`403 forbidden` с хоста при `allow_all: false`**: добавьте CIDR клиента в `whitelist_cidrs`. Запросы из контейнера к самому себе идут с `127.0.0.1` — при необходимости добавьте `127.0.0.1/32`.
- **За reverse proxy**: укажите CIDR прокси в `trusted_proxies`, иначе whitelist видит IP прокси, а не клиента.
- **`502 bad_gateway`**: проверьте `base_url`, DNS в Docker‑сети и то, что Telemt слушает API (`[server.api].enabled=true` и корректный `listen`).