ci: registry-based releases — multi-arch images built in CI, servers only pull

- release workflow: buildx multi-arch (amd64+arm64) build+push of bot and admin images to Gitea Container Registry (git.softuniq.eu/telegram-market/telegram-shop[-admin])
- docker-compose: bot/admin use registry images (IMAGE_TAG for pinning); tor-proxy stays local alpine build
- install.sh: pull from registry instead of local docker build (no native compilation on weak hardware); interactive .env setup preserved
- new buildx runner gitea-host-buildx (label buildx) on x86_64 host
- REGISTRY_TOKEN replaced with package-scoped token (write:package)
- README/VERSION/.env.example updated
This commit is contained in:
NW
2026-08-11 10:37:09 +01:00
parent 33ec420fc0
commit 5c7bc242c5
6 changed files with 272 additions and 85 deletions

View File

@@ -1,8 +1,17 @@
# Telegram Shop — production compose
# Образы НЕ собираются на сервере — тянутся из Gitea Container Registry:
# git.softuniq.eu/telegram-market/telegram-shop (бот, порт 3001)
# git.softuniq.eu/telegram-market/telegram-shop-admin (Next.js админка, порт 3000)
#
# Сборка/релиз: .gitea/workflows/release.yaml (Gitea Actions, buildx multi-arch).
# Для обновления: укажите IMAGE_TAG (по умолчанию latest) и docker compose up -d.
#
# Пример:
# IMAGE_TAG=1.2.9 docker compose up -d
services:
telegram_shop_prod:
build:
context: .
dockerfile: ./Dockerfile
image: git.softuniq.eu/telegram-market/telegram-shop:${IMAGE_TAG:-latest}
hostname: telegram_shop_prod
container_name: telegram_shop_prod
ports:
@@ -10,6 +19,7 @@ services:
restart: unless-stopped
environment:
- ADMIN_CHAT_URL=http://tg_shop_admin:3000/api/chat
- SHOP_ACTIVATED=${SHOP_ACTIVATED:-true}
volumes:
- ./db:/app/db/
- ./uploads:/app/uploads/
@@ -35,9 +45,7 @@ services:
# Новая Next.js админ-панель (Prisma, одна БД с ботом)
tg_shop_admin:
build:
context: ./admin-next
dockerfile: ./Dockerfile
image: git.softuniq.eu/telegram-market/telegram-shop-admin:${IMAGE_TAG:-latest}
container_name: tg_shop_admin
ports:
- "3000:3000"
@@ -73,9 +81,11 @@ services:
- GITEA_API_URL=${GITEA_API_URL}
- WG_PRIVATE_KEY=${WG_PRIVATE_KEY}
- WG_PRESHARED_KEY=${WG_PRESHARED_KEY}
- SHOP_ACTIVATED=${SHOP_ACTIVATED:-true}
volumes:
- ./db:/app/db
- ./uploads:/app/uploads
- ./tor-proxy/hosts:/onion-hosts:ro
deploy:
resources:
limits:
@@ -93,6 +103,7 @@ services:
- tor_proxy_net
tor-proxy:
# Миниатюрный alpine-контейнер (tor + entrypoint) — собирается локально за секунды
build:
context: ./tor-proxy
dockerfile: Dockerfile