公司动态
从零搭建私有云相册:使用 Docker 一键部署 Damselfly全攻略
【Docker项目实战】使用Docker部署Damselfly照片管理系统一、Damselfly介绍1.1 Damselfly简介1.2 Damselfly主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取Damselfly镜像五、部署Damselfly服务5.1 创建部署目录5.2 docker compose方式部署5.3 创建Damselfly容器5.4 查看Damselfly容器状态5.5 检查Damselfly容器日志六、访问Damselfly服务6.1 访问Damselfly首页6.2 上传图片6.3 浏览照片七、总结一、Damselfly介绍1.1 Damselfly简介Damselfly是一个基于服务器的高性能照片管理应用程序专为大规模图像集合设计通过丰富的元数据、AI 视觉识别和快速搜索功能实现高效的照片组织、检索与协作。1.2 Damselfly主要特点广泛格式支持兼容 JPG、PNG、HEIC、TI TIFF、WebP、BMP 及主流 RAW 格式如 CR2、NEF、ORF、DNG。AI 图像识别集成面部检测、人脸识别、物体识别与图像颜色分类等计算机视觉能力。全文与高级搜索支持关键词短语、部分匹配及按日期、设备、方向、文件大小、标签状态等多维度筛选。视觉相似性搜索可查找外观相似的图片提升内容发现效率。极速性能在包含 50 万张图片的库中搜索响应时间低于 1 秒。非破坏性关键词标记使用 ExifTool 更新 IPTC/EXIF 元数据避免 JPEG 重新编码导致的质量损失。多用户与权限控制支持多账户及基于角色的访问控制如只读用户无法编辑标签。地理信息可视化在地图上显示带有地理位置元数据的照片位置。选择篮功能用户可创建私有或共享的图像篮用于下载、导出至外部工具或上传至 WordPress。自动后台索引新增或修改图像时自动更新索引与缩略图无需手动干预。跨平台桌面客户端提供基于 Electron.NET 的 macOS通用、Windows 和 Linux 桌面应用增强本地集成体验。灵活部署支持 Windows、Linux、macOS 及 Docker 环境后端基于 .NET 7前端采用 Blazor WebAssembly。媒体排除机制通过在文件夹中放置.nomedia文件阻止 Damselfly 扫描特定目录。安全导出与水印支持导出带水印的图像便于社交媒体分享或邮件发送。二、本次实践规划2.1 本地环境规划本次实践为个人测试环境操作系统版本为 Ubuntu 24.04.2 LTS。hostnameIP地址操作系统版本Docker版本部署项目备注jeven192.168.3.88Ubuntu 24.04.2 LTS28.5.0Damselfly——2.2 本次实践介绍1.本次实践部署环境为个人测试环境生产环境请谨慎2.在Docker环境下部署Damselfly照片管理系统。三、本地环境检查3.1 检查Docker服务状态检查Docker服务是否正常运行确保Docker正常运行。rootjeven:~# systemctl status docker● docker.service - Docker Application Container Engine Loaded: loaded(/usr/lib/systemd/system/docker.service;enabled;preset: enabled)Active: active(running)since Tue2025-12-02 00:51:31 CST;1min 11s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID:75393(dockerd)Tasks:32Memory:34.1M(peak:34.8M)CPU:1.248s CGroup: /system.slice/docker.service3.2 检查Docker版本检查Docker版本rootjeven:~# docker -vDocker version28.5.0, build 887030f3.3 检查docker compose 版本检查Docker compose版本确保2.0以上版本。rootjeven:~# docker compose versionDocker Compose version v2.39.4四、拉取Damselfly镜像下载Damselfly镜像执行以下命令dockerpull webreaper/damselfly五、部署Damselfly服务5.1 创建部署目录创建部署目录mkdir-p/data/damselfly/{config,thumbs,photos}cd/data/damselfly目录权限设置chmod-R777/data/damselfly5.2 docker compose方式部署新建及编辑docker-compose.yaml文件宿主机映射端口可自行设置注意防止端口冲突。vimdocker-compose.yamlversion:3services:damselfly:image:webreaper/damselflycontainer_name:damselflyrestart:unless-stoppedports:-7100:6363volumes:-./config:/config-./thumbs:/thumbs-./photos:/pictures宿主机路径Host Path容器内路径Container Path说明./config/config存放 Damselfly 的应用程序配置文件如数据库、用户设置等。./thumbs/thumbs用于存储系统自动生成的图像缩略图提升浏览和搜索性能。./photos/pictures挂载用户的照片库根目录Damselfly 将从此路径索引和管理所有图片。5.3 创建Damselfly容器执行以下命令创建Damselfly容器。dockercompose up-d5.4 查看Damselfly容器状态检查Damselfly容器运行状态确保Damselfly容器正常启动。rootjeven:/data/damselfly# docker compose psWARN[0000]/data/damselfly/docker-compose.yaml: the attributeversionis obsolete, it will be ignored, please remove it to avoid potential confusion NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS damselfly webreaper/damselflysh /damselfly-entry…damselfly24seconds ago Up23seconds0.0.0.0:7100-6363/tcp,[::]:7100-6363/tcp5.5 检查Damselfly容器日志检查容器运行日志确保Damselfly服务正常运行。dockercompose logs六、访问Damselfly服务6.1 访问Damselfly首页浏览器地址http://个人的服务器IP:7100访问Damselfly初始页。如果无法访问请确保宿主机的防火墙已关闭或已放行相关端口对于云服务器还需配置相应的安全组规则。6.2 上传图片将本地图片上传到/data/damselfly/photos/目录下如下所示rootjeven:/data/damselfly# cd photos/rootjeven:/data/damselfly/photos# lsv2-61dca6243b04c6eebc3d0c29891bbd49~resize_1440_q75.png v2-768e5c8c516926c529b73e6c4788a1a0~resize_1440_q75.jpg v2-6dc50c16c4184fddd69718633cf9f267~resize_1440_q75.png v2-aa1fabee7fefc859930de3fcebbdc6d4~resize_1440_q75.png rootjeven:/data/damselfly/photos#6.3 浏览照片刷新Damselfly页面后即可看到所有的照片。七、总结通过本次实践我们成功使用 Docker 快速部署了 Damselfly 照片管理系统验证了其在容器化环境下的易用性与稳定性。借助 docker-compose 编排工具仅需几条命令即可完成服务搭建并通过挂载本地目录实现配置、缩略图和照片库的持久化管理。系统启动后通过 Web 界面可高效上传、浏览和搜索海量图像AI 识别与元数据功能表现流畅。Damselfly 凭借高性能、跨平台支持和非破坏性编辑特性非常适合作为个人或团队的私有照片管理中心。