df699a1171
Build & Push Image / Build and push to Gitea Registry (push) Failing after 15s
Свой netrunner-landing/netrunner-landing-proxy теперь на gitea.netrunner-vpn.com. Сторонний образ PocketBase (ghcr.io/muchobien/ pocketbase) не трогаю — это чужой образ, живёт там же, где и жил.
91 lines
5.2 KiB
YAML
91 lines
5.2 KiB
YAML
# =====================================================================
|
||
# DEV (remote VPS, тот же хост, что и netrunner-backend dev-remote:
|
||
# 45.76.161.137, DNS A-record dev.netrunner-vpn.com) — тот же принцип, что
|
||
# и прод: тянем готовые образы из GHCR и запускаем. В отличие от прода,
|
||
# порты открыты не только на 127.0.0.1 — на dev нет reverse-proxy/TLS
|
||
# перед сервисами (см. netrunner-backend/.env.dev-remote.example).
|
||
#
|
||
# Используем доменное имя, а не голый IP, намеренно: Telegram Login Widget
|
||
# требует настоящий домен, зарегистрированный в BotFather (/setdomain) —
|
||
# на IP виджет отвечает "Bot domain invalid" независимо от кода.
|
||
# =====================================================================
|
||
services:
|
||
# Фронтенд (Next.js)
|
||
landing:
|
||
image: ${IMAGE:-gitea.netrunner-vpn.com/nineap/netrunner-landing:latest}
|
||
container_name: netrunner-landing-dev
|
||
restart: always
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
- NODE_ENV=production
|
||
# PB_PUBLIC_URL — адрес PocketBase, который реально используют клиентские
|
||
# компоненты (Pricing, TerminalGuestbook, docs/download/terminal-client.tsx):
|
||
# он читается на сервере в соответствующих page.tsx и прокидывается пропсом
|
||
# (тот же паттерн, что и ACCOUNT_ORIGIN для auth). NEXT_PUBLIC_PB_URL ниже
|
||
# оставлен для остальных мест (Faq/BlogPreview/blog — серверные компоненты,
|
||
# получают данные через PB_INTERNAL_URL, а NEXT_PUBLIC_PB_URL там нужен только
|
||
# как дефолт/для URL картинок) — саму переменную NEXT_PUBLIC_PB_URL Next.js
|
||
# зашивает в бандл на этапе сборки образа в CI и не перечитывает при старте
|
||
# контейнера, поэтому она НЕ годится для рантайм-конфигурации, в отличие от
|
||
# PB_PUBLIC_URL (обычная, не NEXT_PUBLIC_-переменная).
|
||
- PB_PUBLIC_URL=http://dev.netrunner-vpn.com:8090/cms-api
|
||
- NEXT_PUBLIC_PB_URL=http://dev.netrunner-vpn.com:8090/cms-api
|
||
- NEXT_PUBLIC_PROXY_URL=http://dev.netrunner-vpn.com:3001
|
||
- PB_INTERNAL_URL=http://netrunner-cms:8090
|
||
# Единая авторизация: смотрим на dev-бэкенд через Caddy (порт 443,
|
||
# настоящий TLS) — НЕ напрямую на :8080. Бэкенд на dev теперь ставит
|
||
# сессионные cookie с атрибутом Secure (как в проде, раз уже есть TLS),
|
||
# такую cookie браузер примет только с ответа по HTTPS; см.
|
||
# netrunner-backend WEB_APP_BASE_URL/COOKIE_SECURE в .env.dev-remote.example
|
||
# и Caddyfile.dev (Caddy нужен и ради Telegram Web Apps, которым обязателен
|
||
# https://, и ради Telegram Login Widget, которому в браузере обязателен
|
||
# именно порт 443). Без NEXT_PUBLIC_ — читаются на сервере
|
||
# (app/[lang]/auth/page.tsx), поэтому реально применяются в рантайме
|
||
# этого образа, а не только прод-образа, собранного с другими значениями.
|
||
- ACCOUNT_ORIGIN=https://dev.netrunner-vpn.com
|
||
- API_URL=https://dev.netrunner-vpn.com/api/v1
|
||
# ОБЯЗАТЕЛЬНО задать явно (без дефолта на прод-бота!) в .env на сервере —
|
||
# отдельный dev-бот, заведённый через @BotFather специально под
|
||
# dev.netrunner-vpn.com. Молчаливый фолбэк на прод-бота приводил ровно
|
||
# к "Bot domain invalid": у прод-бота в BotFather уже прописан прод-домен.
|
||
- BOT_USERNAME=${BOT_USERNAME:?"Задай BOT_USERNAME dev-бота в .env — см. комментарий выше"}
|
||
depends_on:
|
||
- ws-proxy
|
||
networks:
|
||
- netrunner-network-dev
|
||
|
||
# CMS (PocketBase) — отдельные данные от прода, свой volume.
|
||
netrunner-cms:
|
||
image: ghcr.io/muchobien/pocketbase:latest
|
||
container_name: netrunner-cms-dev
|
||
restart: unless-stopped
|
||
command:
|
||
- serve
|
||
- --http=0.0.0.0:8090
|
||
- --dir=/pb_data
|
||
ports:
|
||
- "8090:8090"
|
||
volumes:
|
||
- ./pb_data_dev:/pb_data
|
||
networks:
|
||
- netrunner-network-dev
|
||
|
||
# Прокси-слой (Rust)
|
||
ws-proxy:
|
||
image: gitea.netrunner-vpn.com/nineap/netrunner-landing-proxy:latest
|
||
container_name: netrunner-ws-proxy-dev
|
||
restart: always
|
||
ports:
|
||
- "3001:3001"
|
||
environment:
|
||
- PB_INTERNAL_URL=http://netrunner-cms:8090
|
||
depends_on:
|
||
- netrunner-cms
|
||
networks:
|
||
- netrunner-network-dev
|
||
|
||
networks:
|
||
netrunner-network-dev:
|
||
driver: bridge
|