关于NodeBB
Nodebb是一个基于nodejs的论坛平台,虽然看起来开源论坛平台是discourse一家独大,但是discourse的docker部署居然都要通过脚本,官方容器也完全没有做服务分离,实在是不太想用。
一番寻找之后发现了NodeBB,看起来功能很全面,部署也没那么麻烦,最重要的是还有node加分
docker-compose.yml
先用git拉取代码,官方提供了docker-compose.yml,修改之后即可使用。
我的docker-compose.yml:
一开始要先注释掉nodebb的volumes,不然不会进入初始化设置页面。
数据库初始化
我感觉Mongodb每次使用的初始化实在是很麻烦,但是NodeBB只支持Mongodb和redis,相比之下感觉还是Mongodb好些。
首先运行db容器之后,用docker exec -ti nodebb-db /bin/bash
进入容器,运行mongo
,use admin
切换到admindb,db.auth("root", "xxxxxxxxxxx")
登陆(不然没法创建用户),然后use nodebb
切换数据库,根据官方文档用db.createUser( { user: "nodebb", pwd: "xxxxxxxxxxx", roles: [ "readWrite" ] } )
创建用户,db.grantRolesToUser("nodebb",[{ role: "clusterMonitor", db: "admin" }])
赋予数据权限。
Nginx反代
创建完成后配置反代,我的Nginx配置文件:
访问站点地址会出现配置页面,信息按照docker-compose.yml填就可以,admin用户也在这个页面创建。初始化完成之后,docker exec -ti nodebb-db /bin/bash
进入容器,cat /usr/src/app/config.json
查看config.json的内容并且全部复制到host的./config.json中,然后就可以去掉nodebb的volumes的注释并且最后重新docker-compose up -d
一次。
保存上传数据及插件
如果需要保留数据,则要添加相应的volume。并且由于容器内是用node用户运行的,相应的路径都要把owner改成1000:1000,不然会权限出错。
如果要保留插件,得把容器内的node_modules文件夹复制出来:
docker cp nodebb:/usr/src/app/node_modules/ ./
最后的volumes块:
分别是配置文件,上传路径,日志路径,插件路径。
重启运行后进入容器运行./nodebb build
。
Comments NOTHING