进阶实战】从单机跑通到高可用架构:我的全栈监控大屏性能与安全优化

发布时间:2026/9/27 9:08:20
进阶实战】从单机跑通到高可用架构:我的全栈监控大屏性能与安全优化 问题执行docker compose up -d启动后docker ps显示所有容器均为Up状态但访问网站却返回 502。Flask 日志Cant connect to MySQL server on db原因Up≠ 能用。MariaDB 启动后要 20-30 秒加载数据、建索引。这段时间容器是Up但连不上。而depends_on默认只等容器创建完成不等它真的能干活——所以 Flask 启动时数据库还没好。解决给数据库加healthcheck让 Flask 等它健康了再启动。1. MariaDB 加健康检查db: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} healthcheck: test: [CMD-SHELL, mariadb-admin ping -h localhost -u root -p${DB_ROOT_PASSWORD} || exit 1] interval: 10s timeout: 5s retries: 5 start_period: 30s # 宽限期避免误判2. Flask 等它健康dashboard_a: build: . depends_on: db: condition: service_healthy # 关键3. 重启验证docker compose down docker compose up -d docker compose ps启动时会看到my-mariadb (health: starting)30 秒后变(healthy)Flask 才开始启动。顺便零停机滚动更新有了健康检查更新时可以逐个来# 先更新 AB 继续扛流量 docker compose up -d --no-deps --build dashboard_a # 等 A 健康后再更新 B docker compose up -d --no-deps --build dashboard_b三个坑坑 1Up是进程活着healthy才是能干活。坑 2忘了start_periodMariaDB 启动时的失败会被误判为 unhealthy容器反复重启。坑 3healthcheck 里别硬编码密码用${DB_ROOT_PASSWORD}变量引用。