Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
124 lines
4.0 KiB
YAML
124 lines
4.0 KiB
YAML
# One-shot QwenPaw Data demo stack.
|
|
#
|
|
# This compose brings up the external infrastructure and context service so the
|
|
# qwenpaw-data app can run against a ready Neo4j + PostgreSQL environment without a
|
|
# local QwenPaw-Data source workspace.
|
|
#
|
|
# Quick start:
|
|
# 1. cp .env.example .env
|
|
# 2. docker compose up -d
|
|
# 3. Open QwenPaw (local or container) and enable the qwenpaw-data app.
|
|
#
|
|
# The optional `qwenpaw` service builds the full QwenPaw image from the repo
|
|
# root. If the build is too heavy or fails (e.g. ACR base images unavailable),
|
|
# disable it and run QwenPaw locally instead:
|
|
# docker compose up -d neo4j postgres context seed
|
|
# qwenpaw app
|
|
#
|
|
# The `seed` service waits for Postgres and the context service to be healthy,
|
|
# then injects the GAAP demo data, imports the semantic workbook, and triggers
|
|
# a weave task.
|
|
|
|
services:
|
|
neo4j:
|
|
image: neo4j:5-community
|
|
container_name: qwenpaw-data-neo4j
|
|
restart: unless-stopped
|
|
environment:
|
|
NEO4J_AUTH: ${NEO4J_USER:-neo4j}/${NEO4J_PASSWORD:-qwenpaw-data-demo}
|
|
NEO4J_PLUGINS: '["apoc"]'
|
|
NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
|
|
ports:
|
|
- "127.0.0.1:${NEO4J_HTTP_PORT:-7474}:7474"
|
|
- "127.0.0.1:${NEO4J_BOLT_PORT:-7687}:7687"
|
|
volumes:
|
|
- neo4j-data:/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO- http://localhost:7474 || exit 1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 30s
|
|
|
|
postgres:
|
|
image: postgres:16
|
|
container_name: qwenpaw-data-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-qwenpaw_data}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-qwenpaw-data-demo}
|
|
POSTGRES_DB: ${POSTGRES_DB:-qwenpaw_data_demo}
|
|
ports:
|
|
- "127.0.0.1:${POSTGRES_PORT:-55432}:5432"
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-qwenpaw_data} -d ${POSTGRES_DB:-qwenpaw_data_demo}"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
start_period: 10s
|
|
|
|
context:
|
|
build:
|
|
context: ./docker/context
|
|
container_name: qwenpaw-data-context
|
|
restart: unless-stopped
|
|
environment:
|
|
QWENPAW_DATA_API_TOKEN: ${QWENPAW_DATA_CONTEXT_TOKEN:-qwenpaw-data-demo-token}
|
|
QWENPAW_DATA_CM_NEO4J_URI: bolt://neo4j:7687
|
|
QWENPAW_DATA_CM_NEO4J_USER: ${NEO4J_USER:-neo4j}
|
|
QWENPAW_DATA_CM_NEO4J_PASSWORD: ${NEO4J_PASSWORD:-qwenpaw-data-demo}
|
|
ports:
|
|
- "127.0.0.1:${CONTEXT_PORT:-8765}:8765"
|
|
depends_on:
|
|
neo4j:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8765/api/health', timeout=5)\""]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
start_period: 10s
|
|
command: >
|
|
sh -c "uvicorn context_manager.api.server:app --host 0.0.0.0 --port 8765"
|
|
|
|
seed:
|
|
build:
|
|
context: ./docker/seed
|
|
container_name: qwenpaw-data-seed
|
|
environment:
|
|
POSTGRES_DSN: postgresql://${POSTGRES_USER:-qwenpaw_data}:${POSTGRES_PASSWORD:-qwenpaw-data-demo}@postgres:5432/${POSTGRES_DB:-qwenpaw_data_demo}
|
|
CONTEXT_URL: http://context:8765
|
|
CONTEXT_TOKEN: ${QWENPAW_DATA_CONTEXT_TOKEN:-qwenpaw-data-demo-token}
|
|
QWENPAW_DATA_DEMO_POSTGRES_PORT: "5432"
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
context:
|
|
condition: service_healthy
|
|
command: >
|
|
sh -c "python /seed.py"
|
|
|
|
qwenpaw:
|
|
build:
|
|
context: ../../..
|
|
dockerfile: deploy/Dockerfile
|
|
container_name: qwenpaw-data-qwenpaw
|
|
environment:
|
|
QWENPAW_PORT: "${QWENPAW_PORT:-8088}"
|
|
QWENPAW_DATA_CONTEXT_MODE: external
|
|
QWENPAW_DATA_CONTEXT_URL: http://context:8765
|
|
QWENPAW_DATA_CONTEXT_TOKEN: ${QWENPAW_DATA_CONTEXT_TOKEN:-qwenpaw-data-demo-token}
|
|
ports:
|
|
- "127.0.0.1:${QWENPAW_PORT:-8088}:8088"
|
|
depends_on:
|
|
context:
|
|
condition: service_healthy
|
|
seed:
|
|
condition: service_completed_successfully
|
|
|
|
volumes:
|
|
neo4j-data:
|
|
postgres-data:
|