docker-compose.yml 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # 检澜(DockScope)— Docker 堆栈(本文件不含 build,避免中文路径下 compose --build 触发 Bake/gRPC 错误)
  2. # 一键启动(项目根目录,需已安装 Node):npm install && npm run up
  3. # 纯命令(PowerShell 一行):$env:DOCKER_BUILDKIT='0'; docker build -f docker/backend/Dockerfile -t bridge-disease-backend:local .; docker build -f docker/frontend/Dockerfile --build-arg VITE_API_BASE_URL=http://127.0.0.1:5000 -t bridge-disease-frontend:local .; docker compose -p bridge-disease up -d
  4. # 检澜 Web http://localhost:8080 检澜 API http://localhost:5000
  5. name: bridge-disease
  6. services:
  7. db:
  8. image: mysql:8.0
  9. container_name: bridge-disease-mysql
  10. restart: unless-stopped
  11. command:
  12. - --character-set-server=utf8mb4
  13. - --collation-server=utf8mb4_unicode_ci
  14. environment:
  15. MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-bridgedisease_root}
  16. MYSQL_DATABASE: ${MYSQL_DATABASE:-bridge_disease}
  17. volumes:
  18. - mysql_data:/var/lib/mysql
  19. ports:
  20. - "${MYSQL_HOST_PORT:-3307}:3306"
  21. healthcheck:
  22. test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD || exit 1"]
  23. interval: 5s
  24. timeout: 5s
  25. retries: 30
  26. start_period: 30s
  27. backend:
  28. image: bridge-disease-backend:local
  29. container_name: bridge-disease-backend
  30. restart: unless-stopped
  31. depends_on:
  32. db:
  33. condition: service_healthy
  34. environment:
  35. FLASK_RUN_HOST: "0.0.0.0"
  36. FLASK_RUN_PORT: "5000"
  37. MYSQL_HOST: db
  38. MYSQL_PORT: "3306"
  39. MYSQL_USER: root
  40. MYSQL_PASSWORD: ${MYSQL_ROOT_PASSWORD:-bridgedisease_root}
  41. MYSQL_DATABASE: ${MYSQL_DATABASE:-bridge_disease}
  42. SQLALCHEMY_DATABASE_URI: mysql+pymysql://root:${MYSQL_ROOT_PASSWORD:-bridgedisease_root}@db:3306/${MYSQL_DATABASE:-bridge_disease}?charset=utf8mb4
  43. ports:
  44. - "5000:5000"
  45. frontend:
  46. image: bridge-disease-frontend:local
  47. container_name: bridge-disease-frontend
  48. restart: unless-stopped
  49. depends_on:
  50. - backend
  51. ports:
  52. - "8080:80"
  53. volumes:
  54. mysql_data: