Ghost 在 pro 生产者模式下使用 Docker 版的 MySQL 5.7。
Ghost使用的默认数据库是sqlite3,以下介绍如何改为使用MySQL数据库。
MySQL数据库也是使用Docker封装好的,别问为什么,问就是方便、好用,利于数据保存。
一开始使用的是最新版本的MySQL数据库,折腾了一个晚上,不是报错就是连不上。有说法是因为 mysql8.0 默认使用了新的密码验证插件 caching_sha2_password
,而旧的密码验证插件是 mysql_native_password
。
想折腾的小伙伴可以自行搜索,这里我们使用 Ghost-Docker 官方介绍使用的 MySQL 5.7 。
一、部署 Docker 版 MySQL
1.1 拉取官方镜像:docker pull mysql:5.7
1.2 创建 my-mysql 容器:docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7
-d:
后台运行
--name:
容器的名字 my-mysql
-e:
设置 my-mysql 账号 root 的密码 123456
-p:
暴露主宿机映射的端口,主宿机3306端口映射容器3306端口
1.3 进入到 my-mysql 容器:docker exec -it my-sql /bin/bash
1.4 创建 ghost 数据库
>> mysql -u root -p
>> password:123456
>> CREATE DATABASE ghost
二、sqlite3 改用 MySQL
2.1 查看 my-mysql 容器在 Docker 内网的 bridge 模式的 IPAddress:docker inspect my-mysql
......
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "ea2471d11899247bd1cc094e516f855c2e62dde720288d145bd2f0ffb4f1c278",
"EndpointID": "6f058b3d1c82ff9517fa8928aaae6ad7a639109227b5c047e5094923e5d577d3",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:04",
"DriverOpts": null
}
}
......
记下 172.17.0.4
2.2 进入到 my-ghost 容器:docker exec -it my-ghost /bin/bash
2.3 进入到 ghost 项目文件根目录 cd /var/lib/ghost
2.4 修改 config.production.json 文件,保证当前的 ghost 是pro生产者模式,详情请看上篇 GHost-Docker(一)。如果是dev开发者模式,则修改 config.development.json.
vim config.production.json
2.5 把 sqlite3 的 database 信息删除,更改如下
......
"database":{
"client": "mysql",
"connection": {
"host": "172.17.0.4", # 刚刚查到的 IPAddress
"user": "root",
"password": "123456",
"database": "ghost",
"port": 3306,
"charset": "utf8"
}
}
.....
2.6 重启 my-ghost 容器后便会在 my-mysql 的 gost 库中自动创建相关数据表
>>docker stop my-ghost
>>docker start my-ghost
下一章:Ghost-Docker(三)增加评论留言会介绍如何添加评论留言的功能。