前阵子我部署项目,把数据库放宿主机上,结果电脑一重启,Docker 直接把数据库删了个精光!我当时的表情 be like 😱:"我的数据呢???" 连备份都没来得及做,差点哭晕在键盘上。
痛定思痛,我决定把数据库也塞进容器里。第二天满怀信心地打开容器一看 —— 数据还在!我刚想庆祝,服务却突然报了个 139 错误。这报错就像 Docker 在阴阳怪气:"想访问?门都没有!"(摊手)
我一开始以为大概率是代码有bug 以下原因
访问空指针或无效指针
访问已释放的内存
栈溢出
内存越界访问(数组越界等)
尝试写入只读内存区域
于是开始找bug,可是没有找到,白费时间。
后来我以为是数据卷没挂载好的问题,修改代码之后问题依然没有解决。
直到某天灵光乍现 —— 我特么用的是 docker-compose up 啊!这货默认前台运行,电脑一关机服务就集体玩消失,跟闹鬼似的!(拍大腿)
docker-compose up
这里告诉大家解决方法,使用docker-compose up -d命令,确保服务在后台持续运行,即使终端会话结束或服务器重启,只要配置正确,容器就会自动重新启动。
docker-compose up -d
总结血泪教训:docker-compose 不加 - d,服务随时回老家!各位老铁记得给服务开个 "后台 VIP 通道",别让它们再离家出走了~