技术复盘:解决 Docker 容器内 MySQL 拒绝外部连接的问题
0. 问题背景在部署 KamaChat 微服务项目时,我通过 Docker 运行了一个包含 MySQL 8.0 的集成镜像。虽然在宿主机(M4 Mac mini)上已经做好了端口映射(3307:3306),且通过 docker exec 进入容器内部可以正常登录数据库,但使用 GoLand 的 Database 工具连接时,始终报错: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 1. 排查过程第一阶段:用户权限校验起初我认为是 root 用户默认禁止远程登录的问题。我进入容器执行了常规的权限修改: 123USE mysql;UPDATE user SET host = '%' WHERE user = 'root';FLUSH PRIVILEGES; 结果: 修改后报错依旧,说明问题不在 MySQL 的用户授权表,而是在更底层的网络监听阶段。 第二阶段:...
Hexo 博客架构:双仓库策略与 GitHub Actions 自动化发布实践
0. 背景由于 2021 年的旧博客源码丢失,仅剩渲染后的 HTML 静态文件,我决定在 M4 Mac mini 上进行博客重建。本次重建的核心目标是实现“源码安全备份”与“一键自动化发布”,确保以后即便更换硬件,也能通过 Git 快速恢复工作流。 1. 架构设计:双仓库策略为了兼顾私密性和展示需求,我采用了双仓库架构: blog-source (Private):存放 Hexo 源码、Markdown 原稿、各种配置文件,不对外开放。 UserName.github.io (Public):仅存放 hexo g 渲染后的静态 HTML 文件,由 GitHub Pages 托管。 2. 本地环境搭建环境整备完全遵循“外置存储”原则,所有环境和数据均位于外置 SSD 中。 A. 基础依赖安装12345# 安装 Node.jsbrew install node# 安装 Hexo 命令行工具npm install -g hexo-cli B. 初始化与主题安装123456789# 外置SSD的名称是 Samsung,如果不同请自行替换cd /Volumes/Samsung/g...
M4 Mac mini 开发环境搭建记录
0. 为什么是 256G 的 Mac mini?2025 年 5 月,趁着毕业答辩顺利完成,我在国补的情况下买了这台 M4 芯片的 Mac mini。在短暂的喜悦之后,我突然发现为了性价比,我选择了最低配的 256GB 存储配置。在 Apple 内存与存储极其昂贵的当下,256GB 的基础款存储在 Go/Rust 编译缓存、Docker 镜像以及 IDE 索引的围攻下显得捉襟见肘。于是过了最初的新鲜感后,这台机器便一直在角落里吃灰。 直到新年,我终于想起来这台机器。本着“闲着也是闲着”的想法,我打算对这台机器进行改造。经过彻夜奋战,我建立了一套“内外分离、全链路加速”的环境架构。本文旨在记录这套可复现的配置方案。 1. 外置三星 1T SSD核心逻辑:系统盘(256G)只留“逻辑”,外部盘(Samsung 1T)负责“存储”。 A. 环境变量重定向通过修改 ~/.zshrc,将所有下载成本高、体积庞大的工具链移动至外置盘: 12345# Goexport GOPATH=/Volumes/Samsung/go_workspace# Rustexport RUSTUP_H...
深挖 SPA 部署中的 404 难题与僵尸进程收割
0. 凌晨 5 点的 404 警报2026 年 1 月 2 日凌晨,在完成 M4 Mac mini 的开发环境整备后,我开始了基于 Go 的微服务 IM 系统——KamaChat 的部署。然而,在最后关头,一个工程难题挡在了面前:SPA(单页应用)路由刷新崩溃。 本文记录了从现象观察到进程级收割的完整排查过程,旨在为同样在 Apple Silicon 架构下进行混合开发的朋友提供避坑指南。 1. 现象描述:会“消失”的页面在部署完成后,通过 Docker 容器内的 Apache 服务器访问系统,出现以下现象: 正常: 点击页面内的按钮跳转(如从首页点击“登录”),页面通过 Vue 路由正常切换。 崩溃: 在 /login 路径下直接刷新浏览器,瞬间弹出 Apache 404 Not Found。 2. 排查:服务端与客户端的“路径代沟”核心原理这是一个典型的 服务端路由 vs 客户端路由 冲突: 客户端路由 (Vue/React): URL 的变化由 JavaScript 拦截并局部渲染,不向服务器请求新文件。 服务端路由 (Apache/Nginx...
测试
注: 本文迁移自 2021 年旧博客,保留当时的心境,记录起点的样子。 虽然早在 10 月 3 日,我便创建了我的第一个个人博客(基于 Hexo,并在 GitHub 上托管的 Blog),但直到 10月 9 日(也就是昨天)我才购买了我的第一个域名(chianchuan.com),个人 Blog 才算搭建完毕。 还有诸多不完善,就等后面来慢慢完善啦!(¬︿̫̿¬☆)哼哼~