先定义一,docker-compose.yaml文件
bash
version: '3.8'
services:
filebrowser:
image: filebrowser/filebrowser:v2.63.17-s6
container_name: filebrowser
restart: unless-stopped
ports:
- "8989:80"
volumes:
# 核心:将宿主机的 dev 目录映射到容器内的 /srv 目录
- /root/Documents/dev:/srv
- ./database:/database
- ./config:/config
environment:
PUID: 1000 # 建议运行 id -u 获取实际值
PGID: 1000 # 建议运行 id -g 获取实际值
TZ: Asia/Shanghai
FB_PASSWORD: 12位不知道行不行。
在定义密码的这里,最小12位,我用短的失败了。
sudo docker compose up -d
会起动,
docker logs filebrowser | grep "password"^C
查看随机密码。
要改成一个12,不方便,于是找改密码方法。小于12.
也许配置文件json中可以定义。但是命令行filebrowser -d file -c file config set help就行看到有一个,config set --minimumPasswordLength 6 这就是改密码的命令。它必然存在db中,另外是前两个,先环境变量,后,json的文件。
因为无法交互式执行,很难找到提示一精确参数名。在docker停下来后,db才有改的权力,不然就是timeout.
以下是停止容器后改的办法。这个容器不常留。
docker run --rm \ -v $(pwd)/database:/database \ -v $(pwd)/config:/config \ filebrowser/filebrowser:v2.63.17-s6 \ filebrowser config set --minimumPasswordLength 6 \ --database /database/filebrowser.db \ --config /config/settings.json ,
改过后就能启动了。
我说下找出和他交互的办法,基于docker 容器。
docker exec -it filebrowser sh
先apk update ,apk add socat
echo 'socat TCP-LISTEN:9990,reuseaddr SYSTEM:"true"&' > newfb
chmod +x. newfb
mv /bin/filebrowser. /fb
mv newfb. /bin/filebrowser
exit
最好先看下,新的,角本的运行情况。
然后重启容器。然后去,用。
/fb -d /database/filebrowser.db -c /config/settings.json config set --minimumPasswordLength 6
完成更改
/fb -d /database/filebrowser.db -c /config/settings.json users update admin --password NEwpass
mv /fb. /bin/filebrowser
把主命令还回去,
这样作是因为,容器需要一个常驻后台,进程,但是这个进程被filebrowser占用,这就无法改变db文件。而且好像db中有最全的配置。相同的情况我在PanIndex中也遇到过。他在离线使用时会因为设置了在线CDN而无法变更设置,也来源于DB文件,基本配置换为本地就能解决。但在容器内又无法能过指令来改。所以先停止,再想法改变sqllite db中的内容。那是用,sqlite3这个客户端改的。
说回这个技巧。
我开发,flask的时候,本质上,最终是要让他做为常驻主进程在容器中的。但是,我们在写码过程中,可以先打开一个无关端口,类似于socat主要是让它不掉线。然后再启动主作务,去写代码和重启。
这就是本次操作的启发吧。虽然可以,写成debug watch relload 这样的动态加载。但是容器的启停报错,不如直接在控制台看到输出来的实在。
