AngusWong's 博客

  • 首页
  • Linux
  • Mac
  • PHP
  • 数据库
  • 路由相关
专注于计算机相关技术分享
  1. 首页
  2. 其他
  3. 正文

构建宝塔面板Docker镜像

2025年3月5日 269点热度 0人点赞 0条评论

一、编写Dockerfile文件

启动脚本里面使用debian12做为基本镜像,因为宝塔最推荐此系统,里面使用的运行脚本bt.sh,下面有代码

# 使用官方 Debian 12 作为基础镜像
FROM debian:12

# 设置维护者信息(可选,名称和邮件)
LABEL maintainer="xxxx xxxx888@qq.com"

# 设置环境变量,避免交互式安装时的提示
ENV DEBIAN_FRONTEND=noninteractive

# 设置默认时区(避免交互式配置)
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && \
    echo $TZ > /etc/timezone

# 使用中科大 USTC镜像源
RUN sed -i 's@deb.debian.org@mirrors.ustc.edu.cn@g' /etc/apt/sources.list.d/debian.sources
# 更新系统并安装必要的软件包
RUN apt-get update && \
    apt-get install -y wget curl sudo cron unzip locales procps iproute2 python3 python3-pip && \
    ln -s /usr/bin/python3 /usr/bin/python && \
    echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && \
    locale-gen en_US.UTF-8 && \
    update-locale LANG=en_US.UTF-8
# 设置语言环境
ENV LANG=en_US.UTF-8 \
    LANGUAGE=en_US:en \
    LC_ALL=en_US.UTF-8
# 关闭防火墙(宝塔推荐)
RUN systemctl disable ufw || true

# 运行宝塔面板安装脚本
RUN wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && \
    chmod +x install_panel.sh && \
    bash install_panel.sh ed8484bec <<EOF
y
EOF

# 清理和修改宝塔面板端口号
RUN  apt-get clean && rm -rf /var/lib/apt/lists/* && \
    echo "8888" > /www/server/panel/data/port.pl

# 开放端口
EXPOSE 22
EXPOSE 80
EXPOSE 443
EXPOSE 3306
EXPOSE 8888

# 复制启动脚本(用于启动宝塔面板和应用,并保持容器运行)
COPY ./bt.sh /

# 运行 bash 作为默认命令
CMD ["/bin/bash", "/bt.sh"]

二、编写启动脚本

Docker下面服务需要自行启动,不会自动 启动,所以需要一个启动脚本,名称bt.sh,放在Dockerfile同级目录

脚本内容如下:

#!/bin/bash

# 重启宝塔面板
/etc/init.d/bt restart

# 设置 init 目录
initDir="/etc/init.d/"

# 要排除的文件列表
exclude_files=("atd" "bt" "cron" "dbus" "exim4" "hwclock.sh" "procps" "sudo" "ufw" "x11-common")

# 遍历 init.d 目录下的每个文件
for i in /etc/init.d/*; do
    # 提取文件名
    filename=$(basename "$i")

    # 确保是文件且不在排除列表中
    if [ -f "$i" ] && [[ ! " ${exclude_files[@]} " =~ " ${filename} " ]]; then
        echo "======Starting $filename ======"
        # 启动每个服务,确保它们是后台运行的
        $i start
    fi
done

# 保持容器在后台运行,防止退出
tail -f /dev/null

 

三、使用构建命令构建脚本


脚本运行记录如下(只留下后面部分,构建时间看网络速度):

$ docker build -t btpanel-debian12 .                                          
[+] Building 202.4s (13/13) FINISHED                                                                                                                          docker:desktop-linux 
 => [internal] load build definition from Dockerfile                                                                                                                          0.0s
 => => transferring dockerfile: 1.62kB                                                                                                                                        0.0s 
 => [internal] load metadata for docker.io/library/debian:12                                                                                                                 23.0s
 => [internal] load .dockerignore                                                                                                                                             0.0s 
 => => transferring context: 2B                                                                                                                                               0.0s
 => [1/8] FROM docker.io/library/debian:12@sha256:35286826a88dc879b4f438b645ba574a55a14187b483d09213a024dc0c0a64ed                                                            0.0s 
 => => resolve docker.io/library/debian:12@sha256:35286826a88dc879b4f438b645ba574a55a14187b483d09213a024dc0c0a64ed                                                            0.0s
 => [internal] load build context                                                                                                                                             0.0s 
 => => transferring context: 710B                                                                                                                                             0.0s
 => [2/8] RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&     echo Asia/Shanghai > /etc/timezone                                                               0.2s 
 => [3/8] RUN sed -i 's@deb.debian.org@mirrors.ustc.edu.cn@g' /etc/apt/sources.list.d/debian.sources                                                                          0.2s
 => [4/8] RUN apt-get update &&     apt-get install -y wget curl sudo cron unzip locales procps iproute2 python3 python3-pip &&     ln -s /usr/bin/python3 /usr/bin/python   43.7s
 => [5/8] RUN systemctl disable ufw || true                                                                                                                                   0.3s
 => [6/8] RUN wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh &&     chmod +x install_panel.sh &&     bash install_panel.sh ed8484bec <<EOF         73.0s 
 => [7/8] RUN  apt-get clean && rm -rf /var/lib/apt/lists/* &&     echo "8888" > /www/server/panel/data/port.pl                                                               0.4s 
 => [8/8] COPY ./bt.sh /                                                                                                                                                      0.2s 
 => exporting to image                                                                                                                                                       61.3s 
 => => exporting layers                                                                                                                                                      42.2s 
 => => exporting manifest sha256:3f8fa296e6fa2c6557cde5ff51bd56d55aa99d8eff4cc4fe770415c755d30cf1                                                                             0.0s 
 => => exporting config sha256:22622b05ad9dc4cfdd697383b6ceab1a33e5b4a470baffb44302086f11ae5795                                                                               0.0s 
 => => exporting attestation manifest sha256:1f9c269f8370890fccc05e038733e5f559534d2c62a21bf6285cfed741c8ced8                                                                 0.0s
 => => exporting manifest list sha256:7cafabc6c825cbf53e1a9b90dda4c7e66d4ae17aab37eaf85791b2e1204b53da                                                                        0.0s
 => => naming to docker.io/library/btpanel-debian12:latest                                                                                                                    0.0s
 => => unpacking to docker.io/library/btpanel-debian12:latest                                                                                                                19.1s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/zmdw96hlq7mjhpjaqigoe9s9w

What's next:
    View a summary of image vulnerabilities and recommendations → docker scout quickview

四、运行Docker容器

命令如下:

$ docker run -d --name btpanel \
    -p 22:22 \
    -p 8888:8888 \
    -p 80:80 \
    -p 443:443 \
    -p 3306:3306 \
    -v ./wwwroot:/www/wwwroot \
    --restart unless-stopped \
    btpanel-debian12:latest

由于不知道用户名密码和入口,所以请使用shell连接容器查询

使用docker ps可以查看容器信息

$ docker ps                      
CONTAINER ID   IMAGE                                          COMMAND              CREATED          STATUS          PORTS                                                                                                          NAMES
859f46038b00   btpanel-debian12:latest                        "/bin/bash /bt.sh"   37 seconds ago   Up 36 seconds   0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:3306->3306/tcp, 0.0.0.0:8888->8888/tcp                                                     btpanel

使用docker exec 进入容器shell

$ docker exec -it btpanel bash
root@859f46038b00:/# bt
==================================宝塔面板命令行====================================
(1) 重启面板服务                  (8) 改面板端口                                   |
(2) 停止面板服务                  (9) 清除面板缓存                                 |
(3) 启动面板服务                  (10) 清除登录限制                                |
(4) 重载面板服务                  (11) 设置是否开启IP + User-Agent验证             |
(5) 修改面板密码                  (12) 取消域名绑定限制                            |
(6) 修改面板用户名                (13) 取消IP访问限制                              |
(7) 强制修改MySQL密码             (14) 查看面板默认信息                            |
(22) 显示面板错误日志             (15) 清理系统垃圾                                |
(23) 关闭BasicAuth认证            (16) 修复面板(检查错误并更新面板文件到最新版)    |
(24) 关闭动态口令认证             (17) 设置日志切割是否压缩                        |
(25) 设置是否保存文件历史副本     (18) 设置是否自动备份面板                        |
(26) 关闭面板ssl                  (19) 关闭面板登录地区限制                        |
(28) 修改面板安全入口             (29) 取消访问设备验证                            |
(30) 取消访问UA验证               (32) 开启/关闭【80、443】端口访问面板            |
(0) 取消                                                                           |
====================================================================================
请输入命令编号:14
===============================================
正在执行(14)...
===============================================
==================================================================
BT-Panel default info!
==================================================================
外网面板地址: http://240e:x:x:x::1:8888/4598cddd
内网面板地址: http://172.17.0.3:8888/4598cddd
username: dulryzmx
password: 6c0c5213
Warning:
If you cannot access the panel,
release the following port (8888|888|80|443|20|21) in the security group
注意:初始密码仅在首次登录面板前能正确获取,其它时间请通过 bt 5 命令修改密码
==================================================================
root@859f46038b00:/#

由上面的命令查询出入口地址和用户名密码,现在可以使用网页管理宝塔面板了

标签: bt Debian12 docker 宝塔
最后更新:2025年3月5日

Sean

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
分类
  • Linux
  • Mac
  • PHP
  • 其他
  • 前端
  • 数据库
  • 路由相关
最新 热点 随机
最新 热点 随机
macOS Sonoma, macOS Sequoia删除Mac启动台里删不掉的图标 PVE8修改软件仓库源和 CT模板(LXC)源为国内源 Debian12更换国内源 构建宝塔面板Docker镜像 无需root!卸载小米电视/盒子内置应用 检查系统是否被入侵
centos7 修改root和home的空间大小 PVE8修改软件仓库源和 CT模板(LXC)源为国内源 强大的Sed命令 解决ESXI安装OpenWrt编辑虚拟机提示“请输入大于原始容量的磁盘大小”问题的方法 Vue混入mixin Linux流行病毒家族&清除方法集锦

COPYRIGHT © 2021 huangyuqiang.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang