使用说明
基于 centos7.9 制作,宝塔面板7.7.0,无需特权 (privileged=false)运行,支持服务自启动。由于宝塔内插件和服务比较多,本人没法全部下载测试, 主要讲解决无特权模式下挂载卷的权限问题(有root特权的可以无视...)
注意只挂载这三个目录:
- /www/wwwlogs -- 网站日志
- /www/wwwroot -- 网站根目录
- /www/backup -- 宝塔自动备份文件
7.7.0 集成更多服务,默认启动用户都改为了root,解决挂载目录权限的问题,适合在没有docker特权的设备安装
已集成,如下服务,并测试挂载目录权限无问题、支持服务自启动:
- redis
- mysql 5.7
- php 7.4 5.6
- nginx 1.2
- 常用插件
- npm nodejs
1. 环境变量说明
- UID: 用户uid 默认 0
- GID: 用户组gid 默认 0
2. 启动
docker run -d --name baota -p 8888:8888 xrbbm/baota
docker run -d --name baota -v /bt/wwwroot:/www/wwwroot -v /bt/backup:/www/backup -v /bt/wwwlogs:/www/wwwlogs -p 8888:8888 xrbbm/baota
PS: 端口按需开放,这里只写了一个,宝塔常用端口: 8888 3306 80 443 888 20 21。建议还是用host模式,如果用来搭建网站还需要更多端口
3.解决挂载目录读写权限问题
-
由于容器共享宿主机的uid,启动容器时如果不加特权(privileged=false)也不指定用户,容器内的用户实际是root,但是这个root实际上也只有普通用户的权限,如果想要容器内的用户能读写挂载的卷,就需要使容器内的应用启动用户与容器启动用户uid gid保持一致,以当前宝塔镜像的解决方案就是,nginx mysql php-fpm等服务全部调整为root启动,同时设置挂载目录所属用户、组为 root(0):root(0) : chown -R "$UID":"$GID" /www/wwwroot。
-
例如:使用admin(假设uid=500)用户运行宝塔,挂载目录为/home/admin/wwwroot:/www/wwwroot,则该目录的所有者uid=500。 宝塔内 nginx 启动用户默认配置为www(假设uid=501) ,nginx 向/www/wwwroot写入文件时自然就失败了,因为www用户无权访问admin所属的目录,此时需要修改nginx配置将nginx启动用户更改为admin。同时chown -R 500:500 /www/wwwroot
4. 其他说明,请参考宝塔官方
https://www.bt.cn/btcode.html
如首次启动无法安装组件,请重启容器!