services: backend-dev: image: node:22-slim working_dir: /app command: sh -c "chown -R node:node /app/node_modules /app/data && su node -c 'npm install && npm run dev'" volumes: - ./backend:/app - backend_node_modules:/app/node_modules - ./data:/app/data env_file: - .env environment: - DATA_DIR=/app/data - RATE_LIMIT_MAX=1000 ports: - "3000:3000" security_opt: - no-new-privileges:true healthcheck: test: ["CMD-SHELL", "node -e \"fetch('http://localhost:3000/health').then(r => process.exit(r.ok ? 0 : 1)).catch(() => process.exit(1))\""] interval: 30s timeout: 10s retries: 3 start_period: 40s frontend-dev: image: node:22-slim working_dir: /app command: sh -c "chown -R node:node /app/node_modules && su node -c 'npm install && npm run dev -- --host --port 5173'" volumes: - ./frontend:/app - frontend_node_modules:/app/node_modules environment: - BACKEND_URL=http://backend-dev:3000 ports: - "5173:5173" security_opt: - no-new-privileges:true depends_on: - backend-dev volumes: backend_node_modules: frontend_node_modules: