version: '3.8' services: backend: build: context: .. dockerfile: ./fastapi-payments-example/backend/Dockerfile ports: - "8000:8000" environment: - DATABASE_URL=sqlite+aiosqlite:///./payments.db - STRIPE_API_KEY=${STRIPE_API_KEY:-sk_test_your_test_key} - STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET:-whsec_your_webhook_secret} - PAYU_API_KEY=${PAYU_API_KEY:-your_payu_key} - PAYU_API_SECRET=${PAYU_API_SECRET:-your_payu_secret} - PAYU_SANDBOX_MODE=${PAYU_SANDBOX_MODE:-true} - CASHFREE_CLIENT_ID=${CASHFREE_CLIENT_ID:-your_cashfree_client_id} - CASHFREE_CLIENT_SECRET=${CASHFREE_CLIENT_SECRET:-your_cashfree_client_secret} - CASHFREE_SANDBOX_MODE=${CASHFREE_SANDBOX_MODE:-true} - CASHFREE_COLLECTION_MODE=${CASHFREE_COLLECTION_MODE:-india} - RAZORPAY_KEY_ID=${RAZORPAY_KEY_ID:-your_razorpay_key_id} - RAZORPAY_KEY_SECRET=${RAZORPAY_KEY_SECRET:-your_razorpay_key_secret} - RAZORPAY_WEBHOOK_SECRET=${RAZORPAY_WEBHOOK_SECRET:-your_razorpay_webhook_secret} - RAZORPAY_SANDBOX_MODE=${RAZORPAY_SANDBOX_MODE:-true} - MESSAGE_BROKER_TYPE=memory - PAYMENT_SANDBOX_MODE=true - DEBUG=true - FRONTEND_URL=http://localhost:3000 - BACKEND_URL=http://localhost:8000 volumes: - ./backend:/app # Exclude patches directory to prevent it from being overwritten by the volume mount - ./backend/patches:/app/patches # Mount the fastapi-payments library source for live editing - ../fastapi-payments/src/fastapi_payments:/fastapi-payments/src/fastapi_payments command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload frontend: build: context: ./frontend ports: - "3000:3000" environment: - NEXT_PUBLIC_API_URL=http://localhost:8000 - NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY:-pk_test_your_publishable_key} volumes: - ./frontend/app:/app/app - ./frontend/components:/app/components - ./frontend/lib:/app/lib - ./frontend/public:/app/public - ./frontend/styles:/app/styles - ./frontend/package.json:/app/package.json - ./frontend/package-lock.json:/app/package-lock.json - ./frontend/next.config.js:/app/next.config.js - ./frontend/postcss.config.js:/app/postcss.config.js - ./frontend/tailwind.config.js:/app/tailwind.config.js - ./frontend/tsconfig.json:/app/tsconfig.json - ./frontend/next-env.d.ts:/app/next-env.d.ts - ./frontend/components.json:/app/components.json - /app/node_modules - /app/.next command: npm run dev depends_on: - backend