Skip to content

Deployment ​

Docker Compose (dev) ​

bash
cp .env.example .env
docker compose -f docker-compose.dev.yml up --build

Services:

  • postgres — PostgreSQL 16
  • redis — Redis Stack
  • api — ASP.NET Core API (:8080 internal)

The frontend, Gateway and documentation portal are normally started separately for local development.

Production package ​

Run docker_build.cmd on Windows (WSL Ubuntu) or ./docker_build.sh on Linux/WSL. The script publishes and packages three application images:

  • pay-api:latest
  • pay-gateway:latest
  • pay-dbmigrator:latest

The resulting archive is written to deploy/DockerData/pay-deploy-YYYYMMDD-HHMMSS.tar.gz. It contains:

  • the three application images (pay-*.tar.gz);
  • the production template from deploy/pay/;
  • SPA static files in www/ (built from frontend/);
  • documentation static files in docs-www/ (VitePress base: '/', dedicated host).

PostgreSQL and Redis images are not bundled; docker-restart.sh pulls them from the registry during the first installation. Frontend and docs are not Docker services — nginx serves www/ and docs-www/ from disk.

On the server:

bash
tar -xzf pay-deploy-*.tar.gz -C /opt/myhoreca-pay --strip-components=1
cd /opt/myhoreca-pay
./docker-restart.sh
# Edit the generated .env, replace every CHANGE_ME value, then run again.
./docker-restart.sh

The production stack runs PostgreSQL, Redis, a one-shot DbMigrator, API and Gateway. Only Gateway is published on the host (5010 by default). Unpack the archive and point nginx at www/ for the SPA; serve docs-www/ on the dedicated docs host (for example docs.bs.myhoreca.id) with VitePress base: '/'. Proxy /api/ to Gateway. See deploy/pay/README.en.md or deploy/pay/README.ru.md.

Environments ​

EnvUIAPIDocs
Testhttps://pay.ru.tuna.amhttps://apipay.ru.tuna.amlocal :5174
Productionhttps://pay.myhoreca.idhttps://pay.myhoreca.id/apihttps://docs.bs.myhoreca.id

Production serves UI and API under one domain (gateway proxies /api/*). Docs are a separate host with VitePress base: '/'.