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
This commit is contained in:
abounoone 2026-03-19 23:32:26 +00:00
parent a3cac96a17
commit 9067451ec7
4 changed files with 85 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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"

31
sync-assets.sh Executable file
View file

@ -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"