利用Docker部署宝塔面板

为什么使用Docker部署宝塔?

  • 环境隔离,一个主机可以部署多套服务
  • 宝塔对主机控制度较高,依赖关系复杂,而 Docker 可以保证宝塔服务不影响到宿主机其他服务。
  • 由于和宿主机环境隔离,不容易被木马攻击。
  • 宝塔面板的兼容性顺序为 Centos7.x > Debian10 > Ubuntu 20.04 > Cenots8.x > Ubuntu 18.04 > 其它系统,而用户的主机五花八门,为了获取最佳的兼容性,使用 Docker 部署是不二选择。
  • Docker 管理成本低,方便迁移。
  • 可随时管理容器,无需重置服务器。

部署环境

服务器:阿里云服务器
操作系统:Debian 11

部署之前,请确保服务器已安装Docker和Docker-compose环境,没有安装的请参考这篇博客

开始部署——参考文档

安装宝塔面板

  • 创建一下安装的目录

    1
    2
    3
    4
    5
    sudo -i

    mkdir -p /root/data/docker_data/bt-data

    cd /root/data/docker_data/bt-data
  • 编写yaml文件

    1
    vim docker-compose.yml

    英文输入法下,按 i

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    version: '3'
    services:
    bt:
    image: btpanel/baota:lnmp
    container_name: bt
    restart: always
    ports:
    - '8888:8888'
    - '888:888'
    - '80:80' # 保持默认即可,不建议修改左侧的80
    - '443:443' # 保持默认即可,不建议修改左侧的443
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Asia/Shanghai
    - MYSQL_ROOT_PASSWORD=bt
    - MYSQL_DATABASE=bt
    - MYSQL_USER=bt
    - MYSQL_PASSWORD=bt
    - BTPANEL_KEY=your_key # 替换为你的宝塔面板密钥。
    volumes:
    - ./database:/root/mysql/ # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 database 文件夹中,以此类推
    - ./www:/www/wwwroot/
    - ./config:/www/server/panel/data/
    - ./ssl:/www/server/panel/vhost/cert/
    - ./logs:/www/server/panel/logs/
    - ./backup:/www/backup/

    按一下 esc,然后 :wq 保存退出。

  • 打开服务器防火墙并访问网页(非必需但很重要)

确保自己使用的服务器已经将上面的yaml文件中的端口都开启了,否则后面网页会访问不了。

有的服务器厂商默认关闭不常用的端口,所以需要手动打开。阿里云服务器是在安全组中添加规则开放端口,可以参考这里,最好是参考所使用服务商提供的官方文档。

运行并访问宝塔面板

1
2
3
cd /root/data/docker_data/bt-data   # 来到 dockercompose 文件所在的文件夹下

docker-compose up -d

开启成功以后,理论上就可以输入 http:// + 服务器ip:8888 访问了。

默认登陆名和密码:

1
2
Username: admin
Password: bt.cn
  1. 不知道服务器 IP,可以直接在命令行输入:curl ip.sb,会显示当前服务器的 IP。
  2. 遇到访问不了的情况,请再次检查在服务商的后台防火墙是否打开对应了端口

今后更新宝塔面板

Docker部署的应用更新都很方便

1
2
3
4
5
6
7
8
9
10
11
cd /root/data/docker_data/bt-data

docker-compose down

cp -r /root/data/docker_data/bt-data /root/data/docker_data/bt.archive # 万事先备份,以防万一

docker-compose pull

docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示:

1
2
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]

输入 y

卸载宝塔面板

1
2
3
4
5
cd /root/data/docker_data/bt-data

docker-compose down

rm -rf /root/data/docker_data/bt-data # 完全删除映射到本地的数据

可以卸载得很干净。