做一个宝塔 docker 镜像

朋友借用服务器,他想用宝塔。我虽然看不上宝塔,为了朋友方便还是搞一搞。

docker 跑宝塔实际上非常不经济,它安装过程中需要装很多包,一些二进制文件大的莫名其妙也不知道干嘛。生成的镜像就 3G。这里只是不想让宝塔把原本环境搞乱,同时防止宝塔霍霍。顺便说下 hub.docker 上的宝塔镜像 5G。

因为过程中有很多交互操作,自用没有发 hub 的需求。我就不用 Dockerfile 构建了。

安装

系统使用 debian ,用交互式 shell 装

1
docker run -it debian -p 8888:8888
1
apt install procps wget -y

宝塔需要 ps 命令,必须装 procps

安装宝塔开心版,没有强制登录。

1
wget -O install.sh http://v7.hostcli.com/install/install-ubuntu_6.0.sh && bash install.sh

按 y 安装

/etc/init.d/bt default 查看登录信息

使用 docker-compose

宝塔貌似没有前台执行的功能,用 docker-compose 的话会无限重启。

写个监控进程的脚本

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env bash

/etc/init.d/bt 3

while true
do
if [ `ps -e | grep BT-Panel | wc -l` -ef 0 ]; then
exit 1
fi
sleep 10
done

容器保存成镜像

ctrl + c 结束掉容器

1
2
3
docker ps -a # 查看容器的 cid
docker commit <cid> bt # 保存成镜像
docker rm <cid> # 删除容器

docker-compose.yml

随便建个文件夹,比如 bt

创建文件 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
version: '3'
services:
baota:
image: bt
ports:
- "127.0.0.1:1080:80"
- "127.0.0.1:1443:443"
- "127.0.0.1:1888:8888"
restart: always
command:
- /bt.sh
volumes:
- /srv/volumes/baota:/www/wwwroot

启动

1
docker-compose up -d 

导出容器

1
docker save bt | xz > baota.tar.xz

进入容器

1
2
docker ps -a # 查看容器的 cid
docker exec -it <cid> bash

本作品采用 知识共享许可协议 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。