宝塔 终于出官方docker了 基于CentOS 7.9.2009 x86_64
LNMP镜像大小大概 733.3MB 解压后大概3006.51MB 。。。没得办法,宝塔的依赖项真的是太多了。。。 在软路由上搞起来先
先整理端口
不打算映射数据出来,方便转移,并预留ssh 和常用端口
#宝塔面板 22 ssl http phpmyadmin
-p 51888:8888 -p 51022:22 -p 51443:443 -p 51080:80 -p 51188:888 \
# 路由器封80 443自定义web端口 以及22重复
-p 51081:51081 -p 51444:51444 -p 51000:22 \
# mysql
-p 51306:3306 \
# redis
-p 51379:6379 \
# pgsql
-p 51432:5432 \
# MongoDB
-p 51017:27017 \
# 备用端口
-p 51200-51299:51200-51299 \
你问我为啥开这么多端口。。我开心我乐意,反正外网又访问不到。。。
镜像和标签的选择
latest 标签拉取的是lib标签,安装了面板并且安装集成依赖包,安装每个软件都会快一点。
fresh 标签表示安装了面板但是没有安装集成依赖包,安装第一个软件会比较慢,因为需要装依赖包。
lib 标签表示安装了面板并且安装集成依赖包,安装每个软件都会快一点。
lnmp 标签表示安装了面板、集成包并且集成LNMP【Nginx1.22+MySQL5.7+PHP7.4】arm标签是MySQL5.6
lamp 标签表示安装了面板、集成包并且集成LAMP【Apache2.4+MySQL5.7+PHP7.4】arm标签是MySQL5.6
我这里选择lnmp
经过测试发现,其实还集成了ftp
目录的挂载
/www/server/data 数据库
/www/wwwroot 网站目录 或者说 静态文件目录
/www/server/panel/vhost 虚拟机主机配置文件
其他目录参考宝塔官网
我不打算映射出来,因为可以在宝塔内挂载oss之类的网盘自动备份。
而且不映射任何目录的话,docker的备份和迁移更为简单简单一些。
最终命令的整理
|
|
默认账户名密码 和登录地址
现在,您可以在浏览器访问默认地址 http://您的ip地址:8888/btpanel 上的宝塔面板。 默认用户:btpanel 默认密码:btpaneldocker 默认SSH密码:用户名 root 密码 btpaneldocker
默认用户:btpanel
默认密码:btpaneldocker
容器默认SSH密码:btpaneldocker
其他
容器内的服务处理
是使用的/bt.sh
这个文件,除了默认服务之外,其他服务需要自行添加默认内容
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
init_path=/etc/init.d
Root_Path=`cat /var/bt_setupPath.conf`
Setup_Path=$Root_Path/server/mysql
Data_Path=$Root_Path/server/data
soft_start(){
${init_path}/nginx start
${init_path}/php-fpm-74 start
${init_path}/pure-ftpd start
${init_path}/bt restart
pkill crond
/sbin/crond
/usr/sbin/sshd -D &
}
is_empty_Data(){
return `ls -A ${Data_Path}/|wc -w`
}
init_mysql(){
# initialize_mysql
if [ -f /init_mysql.sh ];then
sh /init_mysql.sh
rm -f /init_mysql.sh
fi
}
start_mysql(){
chown -R mysql:mysql ${Data_Path}
chgrp -R mysql ${Setup_Path}/.
${init_path}/mysqld start
rm -f /init_mysql.sh
}
soft_start > /dev/null
is_empty_Data > /dev/null
if [ $? == 0 ];then
init_mysql > /dev/null
else
start_mysql > /dev/null
fi
tail -f /dev/null
计划任务的bug
宿主机运行
docker exec -it 容器名称baota bash
pkill crond && /sbin/crond
然后重新添加计划任务
容器内的ssh的bug
已经默认安装了openssh,但是可能还需要处理一下才可以连接,注意 复制的时候 要看一下宿主机的情况。如果不是host模式的话不存在这个问题
#获取容器ID
docker ps|awk 'NR > 1{print$1}'
#复制必要密钥文件到容器内
\cp -r /etc/ssh/ssh_host_* /home/
chmod 600 /home/ssh_host_*
docker cp /home/ssh_host_rsa_key 容器ID:/etc/ssh/
docker cp /home/ssh_host_ecdsa_key 容器ID:/etc/ssh/
docker cp /home/ssh_host_ed25519_key 容器ID:/etc/ssh/
#给容器设置一个root密码,qqwwee123替换成自己想要的密码
docker exec -it 容器ID /bin/bash -c "echo 'qqwwee123'|passwd --stdin root"
#让sshd运行起来
docker exec 容器ID /usr/sbin/sshd -D &
rm -rf /home/ssh_host_*
问题和其他bug
- docker版本更新滞后,也不算大事,宝塔新版问题更多哈哈
- web控制面板卡顿,web终端卡顿 甚至打不开,不缺点是宝塔新版的问题,还是软路由器性能问题
- 宝塔内置系统防火墙不可用(docker的限制。不过确实没必要)
- ssl的证书夹在某些特定情况下 无法保存的问题。这个应该是宝塔自己的bug,月经bug 宝塔反反复复,经常间隔几个版本就出现一次 .重新登录一次面板,然后续签一次证书,或者重新部署一次。运气好的话 就好了,或者整个站点都删掉重新添加,运气不好的话,。。。。删了宝塔吧。。
- innodb_log_buffer_size 的bug,这个以及是宝塔本身的月经bug 反复出现,手动设置一下就好
- web面板 配置mysql的界面 mysql状态不显示,这个应该也是宝塔自己的bug,月经bug
- web面板 终端偶尔打不开 应该是xterm和bug,宝塔本身也或许有问题,退出重新登录就好,或者清理浏览器缓存 重新登录
- 通知模块偶尔显示 名称:undefined xxx,无配置。。这个也是宝塔的月经bug
- 不算是问题,但一定注意第一时间修改 面板用户名密码以及ssh的root密码
题外话
其实已经很久没有新装过宝塔了,然后发现 现在的宝塔 是bug成堆。。。硬硬把用户当作实验台,略有能力的情况下能不用就不用了吧
以前会去宝塔论坛 认真截图 说复现步骤,反馈,然后论坛客服 除了一堆毫无意义的机械回复,也没啥,有时候反馈一个bug 竟然要回帖数次。。。
基本上 修补了上一个bug 然后出现新bug
正经的生产环境,真的不怎么建议用宝塔。。。毕竟现在docker环境可选多部署一个新环境也不难