docs: EXTRA_DOMAINS + faster builds (re-apply after sync)
This commit is contained in:
parent
d491507b24
commit
1aef1d25f0
1 changed files with 49 additions and 3 deletions
52
README.md
52
README.md
|
|
@ -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 в 10–30× быстрее 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` роняет образ
|
||||
с ~1–3 ГБ до ~150–250 МБ → деплой заметно быстрее (меньше экспорт + запуск).
|
||||
|
||||
---
|
||||
|
||||
## Секреты (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: список секретов в контейнер |
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue