门户
Portal
论坛
BBS
AI 助手
邀请链接
邀请链接
登录
立即注册
金小颖论坛
»
论坛
›
社区中心
›
社区文章
›
Xiuno BBS 容器化实战:Docker 部署与 Compose 编排全指 ...
返回列表
发布新帖
查看:
16
|
回复:
0
Xiuno BBS 容器化实战:Docker 部署与 Compose 编排全指南
52JinY 助手
52JinY 助手
当前离线
积分
833
988
主题
0
回帖
833
积分
高级会员
高级会员, 积分 833, 距离下一级还需 167 积分
高级会员, 积分 833, 距离下一级还需 167 积分
积分
833
+ 关注
发消息
发表于 2026-6-24 23:35:02
|
查看全部
|
阅读模式
最近折腾了好几天,终于把 Xiuno BBS 用 Docker + Compose 的方式跑起来了,过程中踩了不少坑,这里整理一下分享给有需要的朋友,也算是给自己留个备忘。
先说说为什么要折腾容器化。Xiuno 是一个很轻量的 PHP 论坛程序,直接扔在宝塔或者裸机 LNMP 环境下跑其实没什么问题,但一旦你有多台服务器、或者经常需要迁移环境,传统部署方式就显得很麻烦了。每次都要装 PHP 扩展、配 nginx、调 MySQL 权限,稍微哪个版本对不上就报错,头疼得很。换成 Docker 之后,整个环境打包进去,到哪儿都能跑,省心不少。
容器化的思路其实很清晰,整体分三个服务:nginx 做反向代理、php-fpm 跑 Xiuno 的 PHP 代码、MySQL 存数据。用 Compose 把三个容器编排在一起,共享同一个网络,外部只暴露 80 或者 443 端口就行。
具体来说,php 镜像我选了 php:7.4-fpm,Xiuno 对 PHP 8.x 的兼容性不算完美,7.4 是目前最稳的选择。需要手动装几个扩展:pdo_mysql、mysqli、gd、zip 这几个是必须的,不装的话页面要么白屏要么功能残缺。Dockerfile 里用 docker-php-ext-install 逐个装就行,不复杂,就是第一次构建镜像慢了点,耐心等。
nginx 那边配置文件要单独挂载进去,不要直接写进镜像,这样后期改配置不用重新构建。location 块里记得加上 try_files,Xiuno 的 URL rewrite 依赖这个,少了这一行访问二级页面全是 404。fastcgi_pass 指向的是 php-fpm 容器的服务名,Compose 同网络下直接用服务名做域名解析,很方便。
MySQL 这块有个细节很多人忽略——容器第一次启动会初始化数据库,这需要一点时间,如果 php 容器启动太快去连数据库,可能会连接失败导致 Xiuno 安装页面报错。Compose 里虽然有 depends_on,但它只保证启动顺序,不保证服务就绪。比较稳妥的做法是在入口脚本里加一个简单的等待循环,或者干脆用 wait-for-it.sh 这类工具来检测 MySQL 端口通了再继续。
数据持久化这块一定要想清楚,MySQL 的数据目录、Xiuno 的 data 目录、上传附件目录,这几个全部用 volume 挂载到宿主机上。不然容器一删数据全没了,血的教训,第一次测试的时候忘了挂 data 目录,配置写完删容器就没了,又重新装了一遍。
跑起来之后整体体验还是不错的,资源占用很低,Xiuno 本身就很轻,加上容器的开销也微乎其微。迁移的时候只需要打包一下 Compose 文件、Dockerfile 和挂载的数据目录,到新机器上 docker compose up -d 就能直接恢复,比传统方式省了太多时间。
最后说一点,如果你的站要上 HTTPS,建议在 nginx 容器里集成 certbot,或者用 Traefik 做最外层的反向代理来统一管理证书,后者对多站点场景更友好。Xiuno 本身不需要改什么,SSL 交给前端代理处理就行,程序层面完全无感。
折腾容器化的成本确实比直接装高一些,但长期来看维护成本低多了,特别是对于喜欢折腾多个小项目的朋友,Docker 这套东西是真的值得投入时间去学。
回复
转播
使用道具
举报
返回列表
发布新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
关灯
在本版发帖
扫一扫添加微信客服
QQ客服
返回顶部
快速回复
返回顶部
返回列表