Docker 部署 Qexo
Qexo 是一个快速、强大、美观的在线 静态博客编辑器。使用 GPL3.0 开源协议。支持包括且不限于在 Vercel 等平台部署, 为您的静态博客添加动态的元素。本文使用 Docker 本地部署 Qexo。
1. 项目分析
1.1. 项目结构
数据库
Django
其中数据库支持多种数据库,官网有所介绍,这里不再赘述,我们制作镜像,肯定镜像越轻量越好,所以我们选择轻量级的sqlite3
数据库,然后就是django
环境,我们可以直接使用python:3.11.3-alpine
镜像进行构建,alpine
镜像体积小,比较适合我们的需求
1.2. 资源准备
- 需要构建镜像的
Dockerfile
文件 - 需要一个
db
文件夹,用于存放数据库文件,在里面创建一个空的db.sqlite3
文件 - 准备一个
configs.py
文件存放数据库连接配置信息 Qexo
的源码,这里我们不需要拷贝到本地,不对代码进行侵入式修改,直接使用git clone
命令拉取代码即可,这样我们的镜像就是一个纯净的Qexo
项目
1.3. 本地环境
- Docker 环境
- Ubuntu 22.04
2. 项目构建
2.1. 构建 Dockerfile
1 | mkdir /data/qexo |
1 | FROM python:3.11.3-alpine |
FROM python:3.11.3-alpine
使用python:3.11.3-alpine
镜像作为基础镜像,前面有介绍pipy源
设置,这里我使用的是腾讯云的pypi/simple
,你也可以使用其他的,比如阿里云
的pypi/simple
,注意即使是服务器,这里最好请使用公网的源,不要使用内网的源,否则可能会出现不可预知的错误时区
设置,这就不用多说了,不设置时区,可能会导致时间不正确,比如django
的admin
后台,时间显示不正确- 然后我创建了
app
目录用来存放项目 git clone
拉取Qexo
项目源代码,如果有网络问题可以使用https://ghproxy.com/
代理加速,这个请自行选择- 拉取代码后,源代码仓库有
requirements.txt
直接使用就好,但是本人遇到了一些环境问题导致镜像构建失败,所以安装了开发环境后,手动重新部署依赖。 - 拷贝相关文件到镜像中,
configs.py
和db
文件夹等需要放进去,可以使用拷贝,或者挂载方式,这里我使用的是拷贝方式(为了省事)。 - 我最后运行使用的是
run.sh
脚本,所以一定记得给脚本赋予可执行权限!!! - 一定记得给脚本赋予可执行权限!!!
- VOLUNE挂载目录,这里我挂载了
/app/db
,/app/data
两个目录,/app/db
是数据库目录,/app/data
是静态文件目录。 app/db
目录是数据库目录,这个目录一定要挂载出来,否则重启镜像会导致配置的数据丢失,这个目录实现数据持久化app/data
目录是静态文件目录,这个目录也需要挂载出来,用来存放hexo
的项目,也就是说请把这个目录挂载给hexo目录
,非本地搭建hexo
,可不挂载
2.2. 配置 run.sh
1 |
|
makemigrations
创建数据库迁移文件migrate
执行数据库迁移runserver
启动django服务- 这些是django的基本操作,当然生产环境还是建议使用
gunicorn
、uwsgi
等工具
2.3. 配置 configs.py
1 | # 数据库配置 |
DOMAINS
是域名配置,需要配置自己的域名
或者IP地址
,类似于添加到访问白名单
的地址,如果不配置,会导致权限问题无法访问
DATABASES
是数据库配置,这里我使用的是sqlite3
数据库,如果你使用的是mysql
或者postgresql
等数据库,请自行修改配置- 如果是
mysql
等数据库,需要自行安装pymysql
等数据库驱动
,用什么数据库就安装什么驱动 - 如果是
mysql
等数据库,还需要添加相关数据库配置,比如HOST
、PORT
、USER
、PASSWORD
等 - 这里使用
sqlite3
数据库,直接使用os.path.join('/app/db' , 'db.sqlite3')
拼接数据库路径
2.4. 构建镜像
1 | docker build -t qexo:1.0 . |
2.5. 运行镜像
1 | docker run -d --name qexo -p 8000:8000 -v /data/qexo/db:/app/db -v /data/blog:/app/data qexo:1.0 |
--name qexo
容器名字-d
后台运行,这里请设置为后台运行,不然你会卡在runserver
命令上,如果卡住请新建一个终端即可,runserver
不会退出-p 8000:8000
端口映射,这里我使用的是8000
端口,你可以自行修改-v /app/db:/app/db
数据库目录挂载,这里我使用的是/app/db
目录,你可以自行修改
3. Qexo初始化配置
如果由域名,您可以配置Qexo域名,A记录指向本地。配置域名反向代理到本地8000端口。示例:https://qexo.yyds.space
如果没有域名,则可以直接访问本地服务器 8000 端口,示例:http://IP:8000
3.1. web 界面配置博客
服务商选择本地,博客路径选择Qexo容器挂载博客路径。
3.2 Qexo 界面展示
4、参考文献
感谢大佬的文档支持!!!
评论