# LexFlow — 数据默认落在本机 Docker volume,无需云数据库 # # 快速开始: # cp docker/env.example docker/.env # 填写 DeepSeek Key 与管理员密码 # docker compose up -d --build # ./scripts/pocketbase/init.sh --docker # 初始化表结构 # ./scripts/pocketbase/init.sh --docker --seed # 可选:合成演示数据 # open http://localhost:3000 services: pocketbase: # Use the locally built PocketBase image (built from docker/Dockerfile.pocketbase) image: mike-pocketbase:latest container_name: lexflow-pocketbase restart: unless-stopped ports: - "8090:8090" volumes: - lexflow_pb_data:/pb/pb_data backend: build: context: . dockerfile: docker/Dockerfile.backend container_name: lexflow-backend restart: unless-stopped depends_on: - pocketbase ports: - "3001:3001" env_file: - docker/.env environment: PORT: "3001" FRONTEND_URL: ${FRONTEND_URL:-http://localhost:3000} # Use host.docker.internal (a dotted hostname) instead of the docker # service name "pocketbase". PocketBase returns "Missing collection # context" (404) for non-auth collections when the request Host is a # single-label name like "pocketbase"; a dotted hostname fixes it. POCKETBASE_URL: http://host.docker.internal:8090 volumes: - lexflow_backend_data:/app/.local-storage frontend: build: context: . dockerfile: docker/Dockerfile.frontend args: NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL:-http://localhost:3001} NEXT_PUBLIC_POCKETBASE_URL: ${NEXT_PUBLIC_POCKETBASE_URL:-http://localhost:8090} container_name: lexflow-frontend restart: unless-stopped depends_on: - backend - pocketbase ports: - "3000:3000" volumes: lexflow_pb_data: lexflow_backend_data: