docker部署halo的踩坑
背景
对服务器和docker指令不熟悉,希望通过面板和docker一键安装使用
踩的第一个坑(启动halo用的H2数据库,不懂做备份)
因为没有配置数据库,启动的时候会默认使用H2数据库,这样就找不到具体的表和数据,也不知道有什么可视化工具能看(后来发现数据存的形式是blob,知道后作用不大,只是通过看后端代码和表的key才看懂系统设计)
halo部署文档中说明
所以重新通过docker-compose去启动容器、配置数据库,这个时候之前配置过的数据应该是都没了······
踩的第二个坑(docker数据库映射)
原本服务器的数据库通过宝塔面安装的mysql5.6,可是hole博客文档对应需要mysql数据版本是8.X以上(不确定5.6版本数据库在代码运行时会不会有影响)所以采用了通过docker安装数据
根据halo的部署文档,虽然有把目录挂载到容器内部的 /var/lib/mysql
,
但是修改配置后又重新创建了容器重启数据库后发现库和表都不见了
~(我觉得是可以恢复回去的,只是我不会)
然后又不明白怎么通过这个映射回去······于是便踩了坑
好在当时好奇数据库怎么存blob导出了一份数据库······也是这一个导出救了我
(因为很早之前学习java、数据库的时候就说数据库不能存文件,要搭建FastDFS文件服务之类的。。。)
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
通过面板一键部署,得到完整配置的mysql
volumes:
- ./data/:/var/lib/mysql
- ./conf/my.cnf:/etc/my.cnf
- ./log:/var/log/mysql
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
踩的第三个坑(docker容器中分配的ip变了)
那是一个凌晨3点的故事,辛辛苦苦昨晚左右东西备份完了。第二天腾讯云服务器不知道怎么访问不上了。
于是重启服务器,这个时候不知道是docker容器启动的顺序还是什么原因,数据库不是原来内网的IP了······
这个时候呢通过docker-compose是可以改halo的数据库连接的,halo是能够正常跑起来的
然而我的服务器中还装了可道云(kodcloud)他的数据库不能通过docker-compose修改,就只能重装
为了解决这个问题,就把mysql网络改成host直接对应服务器的localhost:3306
其他服务通过公网IP:3306访问,防火墙设置仅自己的IP能访问端口。(服务器尽量少开端口账号密码。避免被被人试出密码,有人一直扫描端口试密码,很危险)
PS
写文档的时候 腾讯云服务器有问题了 原来是磁盘IO100%了 服务器重启就好了 在启动docker 一切就正常使用了
但还不知道什么原因导致的。。
通过人工服务 - 腾讯云服务器 安装atop监控服务器 等待下一次服务器爆炸再总结问题的排斥-定位-解决
- 感谢你赐予我前进的力量