chore(deploy): bake commit version into image and add scripts/deploy.sh
This commit is contained in:
@@ -60,6 +60,33 @@ docker compose down # остановка (данные сохраняю
|
||||
> Приложение **не запустится** без `ADMIN_PASSWORD` (защита от пароля по умолчанию).
|
||||
> `DB_PASSWORD` задаёт пароль пользователя `app` в PostgreSQL.
|
||||
|
||||
## Обновление на сервере (деплой)
|
||||
|
||||
Код приложения находится внутри образа: bind-монтируется только `uploads/`. Поэтому после `git pull` нужна **пересборка образа** — `docker compose up -d` без `--build` и `docker compose restart` новый `server.js` и статику не подхватят.
|
||||
|
||||
```bash
|
||||
./scripts/deploy.sh # ветка master (либо $DEPLOY_BRANCH, либо первый аргумент)
|
||||
```
|
||||
|
||||
Скрипт проверяет рабочую копию, обновляет ветку (`fetch` + `checkout` + `pull --ff-only`), собирает образ с версией коммита, перезапускает `app`, затем сверяет `server.js` в контейнере с рабочей копией и печатает `/version.json`.
|
||||
|
||||
Вручную то же самое:
|
||||
|
||||
```bash
|
||||
git checkout master && git pull --ff-only origin master
|
||||
docker compose build --build-arg GIT_COMMIT=$(git rev-parse HEAD) --build-arg GIT_COMMIT_DATE=$(git log -1 --format=%cI) app
|
||||
docker compose up -d app
|
||||
```
|
||||
|
||||
Проверка:
|
||||
|
||||
```bash
|
||||
curl -sk https://127.0.0.1:3443/version.json # версия собранного коммита
|
||||
docker compose exec app md5sum /app/server.js # совпадает с md5sum server.js
|
||||
```
|
||||
|
||||
Версия сборки записывается в `public/version.json` внутри образа из аргументов `GIT_COMMIT` / `GIT_COMMIT_DATE` (`build.args` в `docker-compose.yml`, подставляет `scripts/deploy.sh`) и показывается в сайдбаре админки. Файл в git не хранится (`.gitignore`), локально его обновляет хук: `cp scripts/post-commit.sh .git/hooks/post-commit`. Если `/version.json` отдаёт 404 — образ собран без аргументов версии, нужна пересборка.
|
||||
|
||||
## Конфигурация
|
||||
|
||||
Переменные окружения (`.env`):
|
||||
|
||||
Reference in New Issue
Block a user