alpine/linux 下快速搭建可以随意整体迁移的宝塔面板
#alpine/linux 下快速搭建可以随意整体迁移的宝塔面板
这里以alpine为例,安装后占用50M左右硬盘的一个完整linux系统
下载iso 安装 https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/x86\_64/alpine-virt-3.16.2-x86\_64.iso
安装过程使用国内neusoft镜像,用的虚拟机镜像联网安装,安装后就是最新版
重启后登录:vi /etc/apk/repositories 去掉稳定版的community注释
plaintext
apk add docker #安装docker
rc-update add docker boot #开机自动启动
service docker start #启动
重启一下,启动过程中可以看到dhcp的ip,启动后 ip a 也可以看到,路由器里面dhcp绑定一下ip。
ssh登录 修改docker源 文件不存在 会自动新建
plaintext
vi /etc/docker/daemon.json
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn" ] }
plaintext
service docker restart
# 然后虚拟机关机,整机备份
```
**容器的选择**,
宝塔支持 是 Centos7.x > Debian10 > Ubuntu 20.04 > Centos8 stream > Ubuntu 18.04 > 其它系统
这几个系统的最后支持时间 centos7(2024-6-30)debian10 (2019年7月发布也差不多2024-7)ubuntu20.04(2025-4) Ubuntu 22.04.1 LTS 安全更新至2027年4月 debian11(2026 年 12 月)尽量选择前三个系统,1是因为在debian系下多数组件是编译安装的 2是宝塔最近小bug非常多,centos下会好一些
安装docker centos 和 宝塔
```
docker pull centos:7
docker images
# 启动容器
# 目录不映射出来,因为这里需要做一个全部都在docker的可迁移的
# 先把端口考虑好,后续修改麻烦 宝塔面板的两个 80 和 443 mysql MongoDB Redis PgSQL
# 1122:22 算是备用的,另外需要预留几个golang用的端口 数字80开头的
docker run -i -t -d --name baota -p 8888:8888 -p 180:80 -p 1122:22 -p 1443:443 -p 13306:3306 -p 888:888 -p 16379:6379 -p 27017:27017 -p 27018:27018 -p 27019:27019 -p 28017:28017 -p 5432:5432 -p 8180-8199:8180-8199 --privileged=true --restart=always centos:7 /bin/bash
#开始安装宝塔
docker exec -it baota /bin/bash
#安装脚本
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
```
登录宝塔面板 修改面板入口地址 安装 nginx mysql5.7 php7.4 redis7 php alioss打开常用扩展,因为版本的原因,均为编译安装,速度非常慢,耐心等待,选centos7的话就没有这个问题
配置好dnspod 的key 方便续签域名证书
宝塔 7.9.4 的alioss 有配置错误,经过测试又是一个小bug,导致它无论什么系统无法配置。
vi /www/server/panel/data/aliossAS.conf
```
{"access_key": "XXXXX", "secret_key": "XXXX", "bucket_name": "XXXX", "bucket_domain": "XXXX.oss-cn-qingdao.aliyuncs.com", "backup_path": "/bt_backup/"}
```
可以正常用了
下载我的开源项目webdavgo 把/www目录映射出来到webdav
```
#https://dev.leiyanhui.com/c/webdavgo/
cd /www
wget -c https://gitee.com/joyanhui/webdavgo/releases/download/1.1.1/webdav
chmod -x ./webdav
#wget -c https://gitee.com/joyanhui/webdavgo/releases/download/1.1/webdavgo.json
```
编辑配置文件 关闭文件服务,webdav定位到 /www
vim webdavgo.json
```
{
"server_port":8189,
"webdav_user_name":"admin",
"webdav_user_psw":"12345",
"webdav_file_path":"/www",
"list_server_path":"",
"list_file_path":""
}
```
宝塔新建一个go项目 站点 端口输入上面的端口后,可执行文件 /www/webdav
剩下的不在说明
这样 /www 可以在外网通过webdav访问 测试完成后,修改server\_port端口为没有映射过的端口,nginx开启ssl
同时在自己的域名控制面板里面 添加几个指向本地的子域名,免得测试项目老修改hosts文件
1.host.leiyanhui.com 到10.0.0.1
10.host.leiyanhui.com 到10.0.0.10
\*.10.host.leiyanhui.com 到10.0.0.10
127.host.leiyanhui.com 到 127.0.0.1
\*.127.host.leiyanhui.com 到127.0.0.1
配置docker里面的宝塔自动启动
在容器内新建文件
vi /www/wwwroot/bt.sh
```
## 宝塔 在容器内自动启动
/etc/init.d/bt start
/etc/init.d/redis start
/etc/init.d/php-fpm-74 start
/etc/init.d/mongodb start
/etc/init.d/pgsql start
/etc/init.d/mysqld start
/etc/init.d/memcached start
/etc/init.d/nginx start
crond
seelp 5
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
/etc/init.d/redis stop
/etc/init.d/redis start
crond
```
推出容器,在宿主系统中添加开机启动项,这里以apline为例子
```
cd /etc/local.d
vi bt.start
# 添加内容
docker exec -it baota sh /www/wwwroot/bt.sh
chmod +x bt.start
rc-update add local
```
备份容器 到tar
```
docker export baota> baota.tar
gzip baota.tar
#简化一下 事实证明没啥用 其实还是tar宝
docker export -o baota.tar.gz baota
```
这个压缩包迁移到其他主机上 或 阿里docker服务
```
# 导入到 镜像 baota:v1
docker import baota.tar.gz baota:v1
```
docker重启后 要执行一次