Appearance
Deployment
Docker Compose (dev)
bash
cp .env.example .env
docker compose -f docker-compose.dev.yml up --buildServices:
postgres— PostgreSQL 16redis— Redis Stackapi— 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:latestpay-gateway:latestpay-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 fromfrontend/); - documentation static files in
docs-www/(VitePressbase: '/', 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.shThe 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
| Env | UI | API | Docs |
|---|---|---|---|
| Test | https://pay.ru.tuna.am | https://apipay.ru.tuna.am | local :5174 |
| Production | https://pay.myhoreca.id | https://pay.myhoreca.id/api | https://docs.bs.myhoreca.id |
Production serves UI and API under one domain (gateway proxies /api/*). Docs are a separate host with VitePress base: '/'.