No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-12 07:13:39 +03:00
.forgejo/workflows feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00
.env.example feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00
.gitignore feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00
compose.yaml feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00
deploy.sh feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00
README.md feat: вынесен compose, deploy.sh в этот репо 2026-08-12 07:13:39 +03:00

postilga-deploy

Прод-конфиг Postilga: compose.yaml, deploy.sh, шаблон .env.

Код приложений живёт в отдельных репозиториях (postilga-backend, postilga-frontend) и подтягивается скриптом деплоя в соседние каталоги backend/ и frontend/.

Структура на хосте

Каталог /home/vladimir/apps/postilga — это clone этого репозитория:

~/apps/postilga/          ← postilga-deploy
  compose.yaml
  deploy.sh
  .env                    ← только на хосте, не в git
  .env.example
  backend/                ← clone postilga-backend (gitignore)
  frontend/               ← clone postilga-frontend (gitignore)
  backups/                ← локальные бэкапы (gitignore)

Данные Postgres и загруженные файлы — в Docker volumes (postilga-postgres-data, postilga-uploads), переживают пересборку контейнеров.

Первичная установка / миграция

Если сейчас ~/apps/postilga — просто папка с compose.yaml на хосте:

cd ~/apps
mv postilga postilga.bak
git clone ssh://git@89.223.49.50:2222/vladimir/postilga-deploy.git postilga
cd postilga

# секреты
cp .env.example .env
# перенеси значения из postilga.bak/.env (или создай заново)

# код (или перенеси каталоги из бэкапа)
# mv ../postilga.bak/backend ./backend
# mv ../postilga.bak/frontend ./frontend

chmod +x deploy.sh
./deploy.sh

Named volume postilga-postgres-data сохранится: имя проекта compose останется postilga, если деплой идёт из того же каталога ~/apps/postilga.

Деплой

deploy.sh:

  1. lock (flock), чтобы не было параллельных деплоев;
  2. git pull backend и frontend;
  3. бэкап Postgres в backups/;
  4. docker compose build + up -d;
  5. HTTP healthcheck frontend (:4010) и backend (:4011).

Вручную:

cd ~/apps/postilga
git pull --ff-only
./deploy.sh

Через Forgejo Actions (workflow_dispatch): runner на хосте делает git pull этого репо и запускает ./deploy.sh.

Uploads

Картинки/видео пишутся в volume postilga-uploads/app/uploads в контейнере backend. Без этого volume файлы пропадали после каждого деплоя.