docker运行 官方宝塔

宝塔 终于出官方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的备份和迁移更为简单简单一些。

# 最终命令的整理

1
2
3
4
5
6
7
8
9
docker run -d --restart unless-stopped --name baota \
-p 51888:8888 -p 51022:22 -p 51443:443 -p 51080:80 -p 51188:888  \
-p 51081:51081 -p 51444:51444  -p 51000:22 \
-p 51306:3306  \
-p 51379:6379  \
-p 51432:5432  \
-p 51017:27017  \
-p 51200-51299:51200-51299  \
btpanel/baota:lnmp

# 默认账户名密码 和登录地址

现在,您可以在浏览器访问默认地址 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环境可选多部署一个新环境也不难

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计