在这篇文章中,我将详细介绍如何在 Docker 中部署 PhotoPrism,并解决 MySQL 版本不兼容的问题,最终成功运行并扫描图库。


1. 介绍

PhotoPrism 是一款强大的 AI 照片管理工具,但在 Docker 部署过程中,可能会遇到数据库版本不兼容的问题。本文将重点解决 MySQL 8.0.27 版本不受支持的问题,并推荐使用 MariaDB 作为数据库解决方案。


2. 问题描述

在启动 PhotoPrism 时,日志报错:

time="2025-03-08T08:54:46Z" level=error msg="config: MySQL 8.0.27 is not supported, see https://docs.photoprism.app/getting-started/#databases"

PhotoPrism 官方支持:

  • MariaDB 10.5 或更新版本(推荐)
  • MySQL 5.7 或 8.0(但有已知问题)
  • SQLite(不适用于大图库)

解决方案: 我们将 MySQL 替换为 MariaDB,以确保 PhotoPrism 稳定运行。


3. 解决方案:使用 MariaDB 替换 MySQL

步骤 1:停止并删除现有的 MySQL 容器

docker-compose down
docker rm mysql

步骤 2:修改 docker-compose.yml

找到 mysql 配置部分,替换为 mariadb

version: "3.7"
services:
  photoprism:
    image: photoprism/photoprism:latest
    container_name: photoprism
    restart: unless-stopped
    ports:
      - "2342:2342"
    environment:
      PHOTOPRISM_ADMIN_PASSWORD: "your_admin_password"
      PHOTOPRISM_ORIGINALS_LIMIT: 100000
      PHOTOPRISM_HTTP_COMPRESSION: "gzip"
      PHOTOPRISM_READONLY: "true"
      PHOTOPRISM_UPLOAD_NSFW: "false"
      PHOTOPRISM_DETECTION_NSFW: "true"
      PHOTOPRISM_DARKMODE: "auto"
    volumes:
      - "/home/nextcloud/data/root/files/实时上传:/photoprism/originals:ro"
      - "/opt/photoprism:/photoprism/storage"
    depends_on:
      - mariadb

  mariadb:
    image: mariadb:10.5
    container_name: photoprism_mariadb
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: "db_root_password"
      MYSQL_PASSWORD: "db_password"
      MYSQL_DATABASE: "photoprism"
      MYSQL_USER: "photoprism"
    volumes:
      - "/home/yys/mariadb/data:/var/lib/mysql"

步骤 3:启动容器

docker-compose up -d

4. 访问 PhotoPrism 并扫描图库

打开浏览器,访问:
http://192.168.31.63:2342/

登录信息:

  • 用户名admin
  • 密码your_admin_password

扫描图库:

  1. 登录后,进入 “资料库 (Index)” 页面
  2. 点击 “开始扫描”
  3. 等待 PhotoPrism 处理图片,完成索引

5. 结论

  • MySQL 8.0.27 与 PhotoPrism 不兼容,建议改用 MariaDB 10.5 或更新版本
  • 通过 Docker Compose 修改 docker-compose.yml,可快速切换数据库
  • 启动后访问 http://192.168.31.63:2342/,使用 admin 账号登录并扫描图库

完成后,PhotoPrism 便能正常运行,管理和分类你的照片库!手机apphttps://docs.photoprism.app/developer-guide/native-apps/#gallery-for-photoprism🎉

 

6. 自动索引

在PhotoPrism中实现自动索引可以通过以下方法:

  1. 使用命令行工具

    • 如果你使用的是Docker,可以通过以下命令手动索引:
      docker exec -i <container_id> photoprism  index
      如果需要索引所有照片,可以添加 --all 参数,但这可能会耗费较长时间。
  2. 定时任务

    • 你可以设置一个定时任务(如使用 cron 或其他调度工具(jenkins))来自动运行上述命令。例如,每天早上7点运行索引任务。
  3. 使用插件

    • 如果你在NAS或其他支持插件的环境中运行PhotoPrism,可以安装类似“CA User Scripts”的插件,编写脚本并设置定时执行。
  4. 官方文档

    • PhotoPrism的官方文档中也提供了关于索引的详细说明,可以参考这里

如果你需要更具体的指导,告诉我你的运行环境,我可以提供更详细的帮助! 😊