偶然看到1panel-dood的关于docker
部署1panel
的方法,确实好想法,点赞。
受到启发编写了一下相关文件,把1panel
套娃一下。
与1panel-dood有所不同的是,我是以替换二进制文件的形式来的,
因为如果使用原始安装脚本作为启动命令,当更换容器时,需要事先备份数据库文件,否则会出现数据库覆盖问题。
单主程序的好处了,正好是和之前适配1Panel 应用商店的非官方应用适配库写的GO
语言的应用的Dockerfile
异曲同工。
由于容器内部systemd
限制,部分功能目前尚不完整,等待后面找一个好使的systemctl
镜像来运行。
如果更新了更高版本的镜像,实际是更新了对应版本的二进制程序,面板显示的相关版本还需要手动更新。
相关操作查看下文。
- 默认端口:
10086
- 默认账户:
1panel
- 默认密码:
1panel_password
- 默认入口:
entrance
- 不可调整参数
/var/run/docker.sock
的相关映射
- 可调整参数
推荐使用/opt路径,否则有些调用本地文件的应用可能出现异常
/opt:/opt
文件存储映射TZ=Asia/Shanghai
时区设置1panel
容器名
架构平台对应镜像
- amd64
docker pull moelin/1panel:latest
- arm64
docker pull moelin/1panel:latest-arm64
- armv7
docker pull moelin/1panel:latest-armv7
- ppc64le
docker pull moelin/1panel:latest-ppc64le
- s390x
docker pull moelin/1panel:latest-s390x
# amd64
docker run -d \
--name 1panel \
--restart always \
--network host \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt:/opt \
-e TZ=Asia/Shanghai \
moelin/1panel:latest
创建一个docker-compose.yml
文件,内容类似如下
# amd64
version: '3'
services:
1panel:
container_name: 1panel # 容器名
restart: always
network_mode: "host"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt:/opt # 文件存储映射
environment:
- TZ=Asia/Shanghai # 时区设置
image: moelin/1panel:latest
labels:
createdBy: "Apps"
然后docker-compose up -d
运行
以Debian
系统为例,其他系统对应更改包管理器命令。
- Debian/Ubuntu: apt-get
- RedHat/CentOS: yum
# 更新软件包列表
apt-get update
# 安装 SQLite3,并自动回答所有提示为“是”
apt-get install sqlite3 -y
- 获取文件存储实际路径
在宿主机上的实际路径,假设如下
/opt
- 备份旧数据库
# 将原始数据库文件备份为 .bak 文件
cp /opt/1panel/db/1Panel.db /opt/1panel/db/1Panel.db.bak
- 打开数据库文件
# 打开 SQLite3 数据库
sqlite3 /opt/1panel/db/1Panel.db
- 修改版本信息,按需修改
v1.5.2
UPDATE settings
SET value = 'v1.5.2'
WHERE key = 'SystemVersion';
- 退出修改
.exit
- 重启面板应用更改
# 重新启动 1panel 容器
docker restart 1panel