From 9067451ec7c5f662a90ee7ffdcb07f6a0c03fb59 Mon Sep 17 00:00:00 2001 From: abounoone Date: Thu, 19 Mar 2026 23:32:26 +0000 Subject: [PATCH] feat: add picking_app dev mode and sync-assets support - Add COMPOSE_DEV override for picking_app volume mount - Add dev-up/dev-down/dev-reload Makefile targets - Add compose.picking-dev.yaml overlay - Add compose.sync-assets.yaml overlay - Add sync-assets.sh script for assets sync between containers --- Makefile | 28 +++++++++++++++++++++++++++ overrides/compose.picking-dev.yaml | 20 +++++++++++++++++++ overrides/compose.sync-assets.yaml | 6 ++++++ sync-assets.sh | 31 ++++++++++++++++++++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 overrides/compose.picking-dev.yaml create mode 100644 overrides/compose.sync-assets.yaml create mode 100755 sync-assets.sh diff --git a/Makefile b/Makefile index a6e622cb..045b64ac 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,9 @@ COMPOSE_OVERRIDES := \ -f overrides/compose.local-origin.yaml \ -f overrides/compose.backup-cron.yaml +COMPOSE_DEV := $(COMPOSE_OVERRIDES) \ + -f overrides/compose.picking-dev.yaml + APPS_JSON_B64 := $(shell base64 -w 0 apps.json) # Приложения с pre-built esbuild-бандлами (public/dist/). @@ -155,9 +158,34 @@ backup: bench --site $(SITE) backup --with-files @echo "✓ Бэкап создан (см. sites/$(SITE)/private/backups/)" +# ── Разработка picking_app ─────────────────────────────────── +# Монтирует /home/mkr/picking_app как volume — изменения в VS Code +# сразу видны без пересборки образа. +dev-up: + docker compose $(COMPOSE_DEV) up -d --no-deps --force-recreate \ + backend websocket queue-short queue-long scheduler + @echo "→ Перезапуск frontend (обновление IP backend в nginx)..." + docker compose $(COMPOSE_OVERRIDES) restart frontend + @echo "✓ Dev-режим активен. Исходники: /home/mkr/picking_app" + @echo " Страница: http://localhost:8090/app/picking-mobile" + +dev-down: + docker compose $(COMPOSE_OVERRIDES) up -d --no-deps --force-recreate \ + backend websocket queue-short queue-long scheduler + docker compose $(COMPOSE_OVERRIDES) restart frontend + @echo "✓ Dev-режим выключен, volume-монтирование снято" + +dev-reload: + @echo "→ Сброс кэша Frappe..." + docker compose $(COMPOSE_DEV) exec backend bench --site $(SITE) clear-cache + @echo "✓ Кэш сброшен — перезагрузи страницу в браузере" + # ── Логи и отладка ─────────────────────────────────────────── logs: docker compose $(COMPOSE_OVERRIDES) logs -f backend +logs-picking: + docker compose $(COMPOSE_OVERRIDES) logs -f backend | grep -i "picking\|error\|exception\|traceback" --color + shell: docker compose $(COMPOSE_OVERRIDES) exec backend bash diff --git a/overrides/compose.picking-dev.yaml b/overrides/compose.picking-dev.yaml new file mode 100644 index 00000000..0f8f6aaa --- /dev/null +++ b/overrides/compose.picking-dev.yaml @@ -0,0 +1,20 @@ +services: + backend: + volumes: + - /home/mkr/picking_app:/home/frappe/frappe-bench/apps/picking_app/picking_app:ro + + websocket: + volumes: + - /home/mkr/picking_app:/home/frappe/frappe-bench/apps/picking_app/picking_app:ro + + queue-short: + volumes: + - /home/mkr/picking_app:/home/frappe/frappe-bench/apps/picking_app/picking_app:ro + + queue-long: + volumes: + - /home/mkr/picking_app:/home/frappe/frappe-bench/apps/picking_app/picking_app:ro + + scheduler: + volumes: + - /home/mkr/picking_app:/home/frappe/frappe-bench/apps/picking_app/picking_app:ro diff --git a/overrides/compose.sync-assets.yaml b/overrides/compose.sync-assets.yaml new file mode 100644 index 00000000..ebe4731b --- /dev/null +++ b/overrides/compose.sync-assets.yaml @@ -0,0 +1,6 @@ +services: + backend: + volumes: + - ./sync-assets.sh:/usr/local/bin/sync-assets.sh:ro + command: > + /bin/bash -c "/usr/local/bin/sync-assets.sh && bench schedule" diff --git a/sync-assets.sh b/sync-assets.sh new file mode 100755 index 00000000..e49b2a52 --- /dev/null +++ b/sync-assets.sh @@ -0,0 +1,31 @@ +#!/bin/bash +set -e + +ASSETS_DIR="/home/frappe/frappe-bench/sites/assets" +APPS_DIR="/home/frappe/frappe-bench/apps" + +echo "Syncing assets from apps to shared volume..." + +for app in frappe erpnext hrms lms education lending newsletter drive helpdesk; do + echo "Syncing $app..." + rm -rf "$ASSETS_DIR/$app" + mkdir -p "$ASSETS_DIR/$app/dist" + cp -r "$APPS_DIR/$app/$app/public/dist/"* "$ASSETS_DIR/$app/dist/" 2>/dev/null || true + + if [ -d "$APPS_DIR/$app/$app/public/images" ]; then + mkdir -p "$ASSETS_DIR/$app/images" + cp -r "$APPS_DIR/$app/$app/public/images/"* "$ASSETS_DIR/$app/images/" 2>/dev/null || true + fi + + if [ -d "$APPS_DIR/$app/$app/public/icons" ]; then + mkdir -p "$ASSETS_DIR/$app/icons" + cp -r "$APPS_DIR/$app/$app/public/icons/"* "$ASSETS_DIR/$app/icons/" 2>/dev/null || true + fi + + if [ -d "$APPS_DIR/$app/$app/public/manifest" ]; then + mkdir -p "$ASSETS_DIR/$app/manifest" + cp -r "$APPS_DIR/$app/$app/public/manifest/"* "$ASSETS_DIR/$app/manifest/" 2>/dev/null || true + fi +done + +echo "Assets synced successfully"