docs: EXTRA_DOMAINS + faster builds (re-apply after sync)

This commit is contained in:
root 2026-07-17 08:31:54 +00:00
parent d491507b24
commit 1aef1d25f0

View file

@ -2,8 +2,8 @@
Push в `main` → сайт на твоём домене с SSL. Один файл `.env`, один пуш.
> Это новый флоу на **Forgejo Actions**. Старый GitLab-флоу (`.gitlab-ci.yml`)
> ещё жив до завершения миграции, но новые проекты заводи здесь.
> Флоу на **Forgejo Actions**. Один `.env` + `.forgejo/workflows/deploy.yml` в
> репе — и push. Никакого GitLab.
---
@ -73,7 +73,28 @@ APP_PORT=3000
---
## Скорость билда — bun
## Доп. домены — один сайт на нескольких доменах
По умолчанию сайт отдаётся на `DOMAIN` (+ `www.` авто, если у www есть A-запись на
наш IP). Нужен тот же сайт ещё на других доменах — перечисли их через запятую:
```env
DOMAIN=mysite.com
EXTRA_DOMAINS=mysite.io,app.mysite.com,promo.xyz
```
Платформа раздаёт сайт на всех доменах и на **каждый** выпускает свой SSL-серт
автоматически. От тебя — прописать A-запись каждого домена на IP платформы и
`git push`. `www.` для доп-доменов сам не добавляется — если нужен, впиши
`www.mysite.io` явным пунктом. Нет A-записи → в логе `::warning::`, серт выпустится,
как только DNS укажет сюда.
> One-liner `curl get.<domain> | sh` — особый случай, см. `INSTALL_SH` в
> `.env.example` (отдаёт один файл-скрипт с сабдомена `get.`).
---
## Скорость билда
Платформа собирает фронт через **bun** (install в 1030× быстрее npm). Закоммить
lock-файл:
@ -86,6 +107,29 @@ git add bun.lock && git commit -m "chore: bun lock" && git push
`package.json` и твои `npm run build` скрипты bun понимает as-is. Не коммить
`node_modules` / `dist` (они в `.gitignore`).
### docker-сайты — кеш слоёв и лёгкие образы
Платформа собирает с **BuildKit** и `--cache-from` предыдущего образа: если слои не
менялись, пересборка почти мгновенная. Чтобы это работало на полную:
- **Коммить lockfile** и ставь зависимости ДО копирования кода — слой install
кешируется, пока deps не менялись:
```dockerfile
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build
```
- **Cache-mount'ы** (BuildKit включён) — install/apt не качают заново между сборками,
а Next держит инкрементальный кеш компиляции:
```dockerfile
# syntax=docker/dockerfile:1.7
RUN --mount=type=cache,target=/root/.npm npm ci
RUN --mount=type=cache,target=/app/.next/cache npm run build
```
- **Next.js → лёгкий образ**: `output: 'standalone'` в `next.config` роняет образ
с ~13 ГБ до ~150250 МБ → деплой заметно быстрее (меньше экспорт + запуск).
---
## Секреты (DATABASE_URL, API-ключи)
@ -129,6 +173,8 @@ Settings → Actions → Variables.)
| `BUILD_DIR` | `dist` | static: папка сборки |
| `APP_PORT` | `80` | docker: порт контейнера |
| `WWW` | `auto` | `false` — не подключать www |
| `EXTRA_DOMAINS`| — | доп. домены через запятую (тот же сайт, свой SSL на каждый) |
| `INSTALL_SH` | — | static: отдать файл-скрипт на `get.<domain>` (`curl \| sh`) |
| `ENABLED` | `true` | `false` — выключить сайт |
| `RUNTIME_KEYS`| — | docker: список секретов в контейнер |