279 字
1 分钟
Docker Compose 一键部署:web + api + mysql 全栈上线
编排结构
services: web: # React 静态产物 + Node 代理,:80 对外 api: # Go 中台,:8090,只对内 mysql: # MySQL 8.4,数据持久化一条命令起全栈:
cp .env.docker.example .env # 填 Token 和强密码docker compose -p vsports up -d --build我的 DevOps 习惯
- 配置与代码分离:
API_FOOTBALL_TOKEN、EURO365_DATA_API_KEY、MYSQL_PASSWORD、ADMIN_TOTP_SECRET全走.env,仓库里只有.example,密钥不进 git。 - 健康检查:web 服务对
http://127.0.0.1/做 30 秒间隔探活,挂了自动重启(unless-stopped)。 - 日志收敛:json-file 驱动限制
max-size: 10m、max-file: 3,磁盘不会被日志打爆。 - 前端代理:开发期 Vite 把
/api/*代理到本地127.0.0.1:8090,生产由 web 镜像内的代理层转发,前后端联调零跨域烦恼。 - 发版产物:
releases/下按时间戳打tar包 +sha256,可回滚、可校验。
安全小结
上游 Token、数据库密码、后台 TOTP 密钥全部只存在服务端环境里。Nginx 只暴露 80,前端拿到的永远是加工过的业务数据。
三篇连起来就是我的全栈技能:React 前端、Go + MySQL 中台、Docker 运维。代码之外的思考,欢迎来留言板找我聊。