官方的镜像我使用遇到些问题:redis不能正常启停、macvlan需要使用防火墙也不行、不能挂载到/www目录做完整备、首次启动较慢、无dockerfile文件等
基于解决以上问题创建本项目
宝塔面板Docker镜像
- 基于Debian12构建的宝塔面板镜像,为github Actions自动构建,无人工干预,安全有保障,dockerfile公开可自定义构建
- 优点
- 可自由的挂载目录,数据迁移备份方便而不用操心容器环境,比官方更方便
- dockerfile开源,github actions自动构建,安全,可自定义构建需要的环境
- 镜像文件小
- 解决官方镜像redis不能正常启动等问题
- 面板版本随官方安装脚本更新
- 可使用host网络模式部署,也可使用macvlan网络模式部署作为独立主机(在特权模式下可设置单独的防火墙)
- github: https://github.com/eyunzhu/baota
- docker: https://hub.docker.com/r/eyunzhu/baota
镜像简介
baota:minimal
仅安装了最新版宝塔面板,未装运行环境软件baota:lnmp
安装了完整的LNMP环境(nginx1.24,mysql5.7,php7.4/8.2,phpmyadmin5.1,redis7.2)
镜像使用
-
目录挂载说明
- 可自由挂载
/www
及其之下的任何目录 - 建议直接挂载到
/www
,包含全部的运行环境,方便全息备份,迁移数据,重新部署 - 也可按需最小化挂载
- 容器里面的网站数据目录:
/www/wwwroot
- MySQL数据目录:
/www/server/data
- vhost文件路径:
/www/server/panel/vhost
- 容器里面的网站数据目录:
- 可自由挂载
-
镜像基本运行命令
# 普通模式 docker run -d eyunzhu/baota:lnmp # 特权模式 可单独设置iptables防火墙 docker run -d --privileged --entrypoint="/bin/bash" eyunzhu/baota:lnmp -c "/usr/local/bin/boot.sh & exec /lib/systemd/systemd"
-
面板基本信息
- 面板管理地址:
http://您的ip地址:8888/btpanel
- 默认用户:
username
- 默认密码:
password
- 面板管理地址:
-
常用部署命令记录
# 普通模式 docker run -d --restart=unless-stopped --name='bt_1' -v /local/www:/www --net macvlan-net --ip 192.168.1.211 eyunzhu/baota:lnmp # 特权模式 使用macvlan 可单独设置iptables防火墙 docker run -d --restart=unless-stopped --privileged --name='bt_2' -v /local/www:/www --net macvlan-net --ip 192.168.1.201 --entrypoint="/bin/bash" eyunzhu/baota:lnmp -c "/usr/local/bin/boot.sh & exec /lib/systemd/systemd"
-
其他
- 若使用ssh,请到面板->安全->ssh管理->修改root密码
自主构建镜像方法
可自行修改dockerfile文件,自定义构建镜像
-
项目目录结构
. ├── dockerfiles │ ├── dockerfile.baota # Baota 面板基础镜像 dockerfile │ └── dockerfile.baota-lnmp # Baota 面板 LNMP 镜像 dockerfile ├── references # 参考目录 ├── scripts │ ├── boot.sh # 自定义初始化脚本 │ └── iptables-rules.sh # IPTables 规则脚本 ├── .dockerignore # Docker 镜像忽略文件 └── README.md
-
构建命令
在项目根目录下执行构建baota:minimal
docker build -t eyunzhu/baota:minimal -f ./dockerfiles/dockerfile.baota . # 或者后台运行构建 nohup docker build --network macvlan-net -t eyunzhu/baota:minimal -f ./dockerfiles/dockerfile.baota . > 1.log 2>&1 &
baota:lnmp
docker build -t eyunzhu/baota:lnmp -f ./dockerfiles/dockerfile.baota-lnmp . # 或者后台运行构建 nohup docker build --network macvlan-net -t eyunzhu/baota:lnmp -f ./dockerfiles/dockerfile.baota-lnmp . > 2.log 2>&1 &
问题注意
- 防火墙
-
一般部署不需要注意防火墙,若使用macvlan网络模式部署容器作为独立主机使用需要注意
-
此镜像防火墙仅安装了iptables
修改防火墙请在容器
/usr/local/bin/iptables-rules.sh
脚本中修改完成后运行一次
/usr/local/bin/iptables-rules.sh
脚本即可不要在面板管理规则,且面板中端口只显示ipv4的规则(面板调用的是ufw,镜像未安装,测试ufw在容器中有问题)
-
目前评论:0