冷板凳

飞牛FnOS部署PicHome无法同步大容量Eagle库?一招解决权限数据库卡死问题!

工具  ·  

前言

最近在飞牛(FnOS)上通过 Docker Compose 部署了 PicHome,原本以为挂载好路径、给了 chmod 777 权限就万事大吉。结果发现:

经过一顿排查,终于发现问题根源:Docker 容器内部用户 ID 与飞牛系统用户 ID 不匹配。

核心原因

很多教程只教大家用 chmod -R 777 暴力开权限。虽然这能让容器“看见”文件,但对于需要频繁读写、生成缓存、处理文件锁的大型 Eagle 库,仅仅有读写权限是不够的,还需要正确的文件“所有者”。

当然是不是82,我们后面验证一下即可。

如果你的素材库所有者是 root 或 admin (UID 1000),容器在处理大量文件时就会因为权限冲突被系统“踢”出来。

✅ 终极解决方案

不需要复杂配置,只需要通过 SSH 执行一条命令,把素材库“过户”给容器用户即可。

步骤 1:确认容器用户 ID
如果你想验证一下,可以 SSH 连接飞牛,输入:

codeBash

sudo docker exec pichome-web id www-data
# 注意:pichome-web 是你的容器名

有人就要问,这个 pichome-web 的名字他妈在哪里?

你会发现输出的是 uid=82(www-data),实锤了就是 82。当然验证出来是33那后面的命令就填33。

步骤 2:执行“过户”命令(关键!)
在 SSH 中执行以下命令,将你的 Eagle 库文件夹所有者改为 82:

codeBash

# 请将下面的路径替换为你自己的真实素材库路径
sudo chown -R 82:82 /vol1/1000/你的素材库目录/library

解释:chown 是修改所有者,82:82 对应的是 Alpine 系统里 www-data 的用户 ID 和组 ID。(如果验证出来是33,那么就是33:33)

步骤 3:重启并同步

这时候你会发现,几万张图片的大库也能顺滑跑完进度条了!

附:Docker Compose 推荐配置

为了防止新手在部署时遇到数据库连接问题,顺便贴一个通过验证的 docker-compose.yaml 配置:

codeYaml

version: '3'
services:
  db:
    image: mysql:5.7
    container_name: pichome-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: pichome
      MYSQL_USER: pichome
      MYSQL_PASSWORD: pichome123
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always

  pichome:
    image: oaooa/pichome
    container_name: pichome-web
    depends_on:
      - db
    ports:
      - "9000:80"  # 端口根据自己需求改
    volumes:
      - ./html:/var/www/html
      # 挂载你的 Eagle 库,注意左边改成你的真实路径
      - /vol1/1000/你的素材库目录/library:/library
    environment:
      - DB_HOST=db
      - DB_USER=pichome
      - DB_PASSWORD=pichome123
      - DB_NAME=pichome
    restart: always

希望这个经验能帮到同样卡在“大库同步”上的飞牛玩家!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注