docker-compose.demo.yml 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # DoTouch.AI 本地演示环境(独立隔离,不干扰开发)
  2. # 用法:docker compose -f docker-compose.demo.yml up -d --build
  3. # 访问:API http://localhost:8081/v1/health | 演示账号 test-e2e@dotouch.ai / Test1234
  4. services:
  5. demo-postgres:
  6. image: postgres:16-alpine
  7. container_name: demo-dotouch-postgres
  8. restart: unless-stopped
  9. environment:
  10. POSTGRES_USER: dotouch
  11. POSTGRES_PASSWORD: dotouch
  12. POSTGRES_DB: dotouch
  13. ports:
  14. - "5433:5432"
  15. volumes:
  16. - demo-pgdata:/var/lib/postgresql/data
  17. healthcheck:
  18. test: ["CMD-SHELL", "pg_isready -U dotouch -d dotouch"]
  19. interval: 10s
  20. timeout: 5s
  21. retries: 5
  22. demo-redis:
  23. image: redis:7-alpine
  24. container_name: demo-dotouch-redis
  25. restart: unless-stopped
  26. ports:
  27. - "6380:6379"
  28. healthcheck:
  29. test: ["CMD", "redis-cli", "ping"]
  30. interval: 10s
  31. timeout: 5s
  32. retries: 5
  33. demo-mock-upstream:
  34. image: node:22-alpine
  35. container_name: demo-dotouch-mock
  36. restart: unless-stopped
  37. working_dir: /app
  38. volumes:
  39. - ./apps/api/scripts:/app
  40. command: node mock-upstream.mjs
  41. ports:
  42. - "19091:19090"
  43. demo-api:
  44. build:
  45. context: .
  46. dockerfile: Dockerfile.api
  47. container_name: demo-dotouch-api
  48. restart: unless-stopped
  49. environment:
  50. DATABASE_URL: postgresql://dotouch:dotouch@demo-postgres:5432/dotouch?schema=public
  51. REDIS_URL: redis://demo-redis:6379
  52. JWT_SECRET: demo-secret-change-me
  53. JWT_EXPIRES_IN: 7d
  54. PORT: "8080"
  55. DASHSCOPE_BASE_URL: http://demo-mock-upstream:19090/v1
  56. DASHSCOPE_API_KEY: mock-key
  57. PAYMENT_PROVIDER: mock
  58. depends_on:
  59. demo-postgres:
  60. condition: service_healthy
  61. demo-redis:
  62. condition: service_healthy
  63. demo-mock-upstream:
  64. condition: service_started
  65. ports:
  66. - "8081:8080"
  67. demo-web:
  68. build:
  69. context: .
  70. dockerfile: Dockerfile.web
  71. container_name: demo-dotouch-web
  72. restart: unless-stopped
  73. depends_on:
  74. - demo-api
  75. ports:
  76. - "3000:3000"
  77. volumes:
  78. demo-pgdata: