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.
This commit is contained in:
@@ -6,32 +6,54 @@ HTTP‑шлюз на Go для [Telemt Control API](docs/API.md): один по
|
||||
|
||||
Предполагается установлены Docker и Docker Compose v2.
|
||||
|
||||
**Рекомендуется** брать уже собранный образ из Container Registry Gitea (после каждого push в репозиторий CI обновляет теги, в том числе `latest`):
|
||||
|
||||
```bash
|
||||
# при необходимости (закрытый registry): логин Gitea + PAT с read:package
|
||||
docker login git.shts.su
|
||||
|
||||
docker pull git.shts.su/denozord/telemt-api:latest
|
||||
```
|
||||
|
||||
Конфиг возьмите из репозитория или создайте свой `config.yaml` (см. [config.example.yaml](config.example.yaml)):
|
||||
|
||||
```bash
|
||||
git clone <url-репозитория> && cd telemt-api
|
||||
cp config.example.yaml config.yaml
|
||||
# отредактируйте config.yaml: servers, whitelist_cidrs или allow_all для разработки
|
||||
docker build -t telemt-api-gateway:local .
|
||||
# отредактируйте config.yaml: servers, whitelist_cidrs или allow_all для разработки
|
||||
|
||||
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
|
||||
|
||||
curl -sS http://127.0.0.1:8080/health
|
||||
curl -sS http://127.0.0.1:8080/api/main_srv/health
|
||||
```
|
||||
|
||||
Или через Compose (пример конфига смотрите в `config.compose.yaml`):
|
||||
Обновление образа: `docker pull git.shts.su/denozord/telemt-api:latest` и пересоздайте контейнер (`docker rm -f telemt-gateway` и снова `docker run …`).
|
||||
|
||||
### Compose
|
||||
|
||||
Тот же образ подтягивается из registry (без локальной сборки):
|
||||
|
||||
```bash
|
||||
docker compose up -d --build
|
||||
git clone <url-репозитория> && cd telemt-api
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
docker compose logs -f gateway
|
||||
```
|
||||
|
||||
### Локальная сборка образа
|
||||
|
||||
Если нужен образ из исходников на этой машине: `docker build -t telemt-api-gateway:local .` и в `docker run` укажите тег `telemt-api-gateway:local`. Подробнее — [docs/GATEWAY_RUN.md](docs/GATEWAY_RUN.md).
|
||||
|
||||
## Документация
|
||||
|
||||
| Документ | Содержание |
|
||||
|----------|------------|
|
||||
| **[docs/GATEWAY_RUN.md](docs/GATEWAY_RUN.md)** | Полная инструкция: конфиг, Docker CLI, Compose, CI/CD, неполадки |
|
||||
| **[docs/GATEWAY_RUN.md](docs/GATEWAY_RUN.md)** | Полная инструкция: конфиг, pull/registry, Docker CLI, Compose, CI/CD, неполадки |
|
||||
| **[docs/API.md](docs/API.md)** | Контракт Telemt Control API (`/v1/…`) |
|
||||
|
||||
## Сборка и тесты без Docker
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
services:
|
||||
gateway:
|
||||
build: .
|
||||
image: telemt-api-gateway:local
|
||||
image: git.shts.su/denozord/telemt-api:latest
|
||||
# Локальная сборка вместо pull: укажите build: . и image: telemt-api-gateway:local
|
||||
ports:
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
|
||||
+36
-13
@@ -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`).
|
||||
|
||||
Reference in New Issue
Block a user