
愚人节的时候,Typecho迎来了久违的更新,除了版本和环境的升级,还增加了对docker的支持。本来打算过段时间试一下,但意外发生了。
小故事
今天华为云的人突然给我打电话,说我的一个域名过期了,还不能访问。听到这,我都怀疑是诈骗了,因为域名是一月份购置了一年,备案完,我就将主域和子域全部解析到了华为的服务器上,并部署了NginxProxyManager做反向代理用。尽管我并没有做主域的内容,但是访问肯定是没有问题的。尽管心里很不爽,但还是顺着客服的意思,回复了邮件(邮件的域名确实是官方的)。
不知道是客服的问题,还是官方检测系统的问题,真的很降好感度。
本地部署测试
既然他们提醒了,那干脆放一个内容上去吧。联想到Typecho前些天的更新,就试一下Docker版的Typecho。
结果官方项目的使用方法,我很快在本地通过docker compose将typecho跑了起来。
# https://github.com/typecho/Dockerfile
version: '3'
services:
typecho:
container_name: typecho-server
image: joyqi/typecho:nightly-php7.4-apache
ports:
- 6881:80
environment:
TIMEZONE: Asia/Shanghai
MEMORY_LIMIT: 100M # PHP内存限制
MAX_POST_BODY: 50M
TYPECHO_INSTALL: 1 # 设置为1将运行自动安装脚本
TYPECHO_DB_ADAPTER: Pdo_SQLite # 数据驱动器Pdo_Mysql, Pdo_SQLite, Pdo_Pgsql, Mysqli, SQLite, Pgsql.
# TYPECHO_DB_HOST: host
# TYPECHO_DB_PORT: 3306
# TYPECHO_DB_USER: user
# TYPECHO_DB_PASSWORD: password
# TYPECHO_DB_DATABASE: database
TYPECHO_DB_FILE: /app/usr/typecho.db
TYPECHO_DB_PREFIX: tpyecho_
# TYPECHO_DB_ENGINE: InnoDB # 仅Mysql可用
# TYPECHO_DB_CHARSET: utf8 # default: utf8(for pgsql) or utf8mb4(for mysql)
TYPECHO_DB_NEXT: keep # none keep force
TYPECHO_SITE_URL: http://127.0.0.1:6881
TYPECHO_USER_NAME: username
TYPECHO_USER_PASSWORD: password
TYPECHO_USER_MAIL: admin@localhost.local
volumes:
- ./data:/app/usr
restart: unless-stopped
因为不会一直增加内容,所以我选择sqlite作为数据存储。经过一番调试之后,项目跑了起来。
线上部署
因为Docker版本加了自动部署的选项,所以如何使数据持久化存储(不需要每次启动docker都重新安装)就很多次。本以为线上就直接跑起来了,但是没有想到意外发生了。
按照本地测试通过的运行方式,到了线上竟然不能自动部署。本来以为是镜像的问题,但是换了其他版本的镜像还是不能使用。于是我决定干脆就直接手动安装吧,先看一下问题时出现在了哪里。
但没想到手动安装还是出现了问题,提示连接不到数据库。这我就纳闷了,sqlite数据库就一个db文件,连接不到创建一个就好了呀(程序里面肯定是有这一步的,不知道为啥没生效)。于是我干脆手动建一个,看看还能不能继续跑。意外还是来了,提示数据库有旧数据,点击了强制安装之后没办法进行。
到这里的时候,我大概明白了,可能是镜像没有映射出来的目录的写入权限。这个问题在群辉部署其他docker镜像的时候经常出现,开发者有些会允许传入PUID和PGID,使镜像正常工作。但如果没有开发者适配的话,需要将文件夹权限设置为所有人。
于是,再一次尝试过后,终于还是跑起来了。
最后说两句
使用docker+sqlite的方式部署Typecho,备份是非常简单的。但是,不知道我用的主题和插件会不会受到影响。所以还是暂时不会讲环境切到docker环境上,还有docker版本的虽然使用很方便,但是镜像的文件是真的大,毕竟放了一整个PHP环境,还不是共用的。
我也是docker部署的,备份很方便,就是不知道流程程度会不会是docker的原因慢了些。
请问你是什么平台 windows还是linux
过来看看
常来玩呀
docker部署确实省心,php和web服务器打包装好了,就是要注意数据目录要映射出去,不然重启就都没了
数据确实是个比较麻烦的事情,这几天再搞服务器备份的事情。打算搞个自动同步,定时把数据本分到本地nas上
这两天玩docker玩到吐,我还是选择稳妥点放传统环境,怕有什么不兼容什么的问题出现
一开始没搞懂的时候也没觉得docker有多方便,现在用起来贼顺手,compose一写,数据目录直接保存在同级目录,备份脚本只需要备份整个目录就可以。
一般来说,开发者构建的比较好的话,用起来还是比较爽的,尤其是环境依赖没有那么严重的。
传统部署部署稳定性肯定是毋庸置疑的,但是备份和部署起来是真的麻烦。国内的机子还好,一次几年购入,国外的想找个稳定的运行商,价格太高了。
您好!我在win10 和 win11两台电脑的docker desktop上分别部署了相同的typecho,但是win10的移动端显示正常,win11部署后移动端访问界面错位,这个您遇到过吗
这个暂时还没有在win11上面测试,如果是访问界面错位,可能是css的问题,建议开启浏览器开发者模式,看一下具体是什么问题导致的