🚀 使用 Docker Compose 部署 EasyImage 图床(轻量级图片管理工具)
🚀 使用 Docker Compose 部署 EasyImage 图床
EasyImage 是一款高效、灵活的开源图床程序,始于2018年,经历了多次迭代和优化。它支持多文件上传,无需数据库即可使用,能够返回图片 url、Markdown、BBSCode 和 HTML 等多种格式的链接。EasyImage 对环境要求极低,部署简单,非常适合个人和小型团队使用。
📦 项目简介
核心特点
| 特点类别 | 具体说明 |
|---|---|
| 功能丰富 | 支持API、仅登录后上传、设置图片质量、压缩图片大小、文字/图片水印、设置图片指定宽/高、上传图片转换为指定格式、限制最低宽度/高度上传、在线管理图片、网站统计等。 |
| 上传与管理 | 支持多文件上传,同时兼顾HTML5与Flash、Silverlight的上传方式,确保在各种环境下都能正常工作。支持上传其他文件格式,并具备上传IP黑白名单、上传日志IP定位、限制日上传次数等管理功能。 |
| 安全与兼容 | 支持图片鉴黄,允许自定义代码。兼容性良好,支持从PHP 5.6到8.0的所有版本(建议PHP7.0及以上),对服务器性能要求极低。 |
使用场景 * 个人创作与建站:方便在创作博客、搭建论坛或播客时上传图片并获取外链。 * 团队文件共享与协作:作为团队内部图片共享和管理的工具。 * 替代复杂图床:当需要图床功能但希望避免复杂部署(如配置数据库)时,EasyImage 是一个不错的轻量级选择。
📦 项目简介2
EasyImage 是一款开源轻量的 Web 端图片管理工具,核心功能包括图片上传、在线预览、分类管理、链接分享等,适合个人或小团队快速搭建私有图床。其设计简洁、配置门槛低,支持通过 Docker 容器化部署,无需复杂环境依赖,同时通过目录挂载实现图片与配置数据的持久化,确保容器删除后数据不丢失。
核心特点
- 轻量高效:镜像体积小(约 200MB),运行内存占用 < 100MB,1 核 1GB 服务器 / NAS 即可稳定运行;
- Web 可视化管理:通过浏览器访问管理界面,支持拖拽上传、图片预览、批量删除,操作直观;
- 数据持久化:配置文件(
config)与图片文件(i)分别挂载到本地目录,数据完全自主可控; - 权限适配:通过
PUID/PGID配置本地用户权限,避免容器内文件与本地目录权限冲突; - 跨设备访问:支持电脑、手机等设备通过浏览器访问,无需安装客户端;
- 灵活端口:可自定义主机端口映射,避免与本地其他服务端口冲突;
- 中文友好:默认支持中文界面,无需额外配置语言包。
📋 部署前准备
-
环境要求 确保你的服务器已安装
Docker和Docker Compose。 -
资源检查
- 端口:确认
18080端口(或你计划使用的其他端口)未被其他程序占用。 - 磁盘空间:确保部署目录有足够的空间存储图片数据。
- 权限:确保当前用户对部署目录有读写权限。
- 端口:确认
⚙️ 配置 Docker Compose
1.创建项目目录
创建一个目录(如 easyimage)用于存放所有相关文件,并进入该目录。
mkdir -p /path/to/your/easyimage && cd /path/to/your/easyimage
2.创建 docker-compose.yml 文件
将用户提供的配置内容保存到新创建的 docker-compose.yml 文件中。
#version: '3.3'
services:
easyimage:
image: ddsderek/easyimage:latest # EasyImage 官方最新镜像(稳定版)
container_name: easyimage # 容器名称,便于管理(如查看日志、重启)
ports:
# 端口映射:主机端口:容器端口(容器内固定80,主机端口可修改,避免冲突)
- '18080:80' # 若18080被占用,可改为 8081:80、18081:80 等
environment:
- TZ=Asia/Shanghai # 时区配置(固定为上海,确保日志与本地时间一致)
- PUID=1000 # 本地用户UID(必须修改!执行 `id -u` 查看当前用户UID,如1001)
- PGID=1000 # 本地用户组GID(必须修改!执行 `id -g` 查看当前用户GID,与UID对应)
- DEBUG=false # 调试模式(默认关闭,无需修改,开启会输出冗余日志)
volumes:
# 配置文件持久化:本地 ./config ↔ 容器 /app/web/config(存储界面设置、用户配置)
- './config:/app/web/config' #冒号前面映射本地目录
# 图片文件持久化:本地 ./i ↔ 容器 /app/web/i(存储所有上传的图片,核心目录)
- './i:/app/web/i' #冒号前面映射本地目录
restart: unless-stopped # 容器异常退出后自动重启(手动停止后不重启,适合稳定运行)
#restart: always
# 以下配置默认注释,新手无需启用(按需选择)
#network_mode: "host" #主机模式.无需预先映射端口
#privileged: true # 特权模式(仅特殊权限需求时启用,如挂载特殊设备,默认无需)
3.关键配置说明
* 镜像:ddsderek/easyimage:latest 是 EasyImage 的 Docker 镜像。
* 数据持久化:volumes 部分将容器内的目录挂载到宿主机,防止容器重启后数据丢失。./config 目录用于存放配置文件,./i 目录用于存放上传的图片和缓存。
* 端口映射:'18080:80' 表示将宿主机的 18080 端口映射到 EasyImage 容器的 80 端口。你可以按需修改宿主机端口。
* 用户权限:PUID 和 PGID 用于指定容器内进程运行的用户和组ID,这会影响容器在宿主机上创建文件的属主。请确保它们与宿主机上当前用户(对挂载目录有权限)的 UID 和 GID 一致,可以通过 id $USER 命令查看。
* 时区设置:TZ=Asia/Shanghai 用于设置容器的时区,请根据实际情况修改。
🚀 启动与验证
1.启动服务
在 docker-compose.yml 文件所在目录下,执行以下命令来后台启动服务:
docker-compose up -d
2.检查服务状态 使用以下命令查看容器是否正常运行:
docker-compose ps
如果状态(State)栏显示为 Up,则表明容器已成功启动。
3.查看日志 如果容器启动异常,可以通过日志来排查问题:
docker-compose logs easyimage
4.访问服务
在浏览器中输入 http://你的服务器IP:18080。如果看到 EasyImage 的安装或登录界面,说明服务已成功部署。
(2)访问 EasyImage 管理界面
- 打开浏览器,输入
http://服务器IP:18080(如:- 本地测试:
http://localhost:18080 - 局域网访问:
http://192.168.1.100:18080 - 公网访问:
http://你的服务器公网IP:18080);
- 本地测试:
- 首次访问会直接进入 图片管理主界面(默认无需登录,可后续在设置中开启用户认证);
- 界面显示 “上传图片” 按钮、空白图片列表,说明服务正常;
- 验证权限:点击 “上传图片”,选择一张本地图片(如 100KB 以内的 PNG/JPG),若上传成功并显示预览图,说明
PUID/PGID配置正确。
🔧 基础配置与使用
-
初始设置
- 首次访问 EasyImage(
http://你的服务器IP:18080),可能会有一个安装环境检测的过程,通常可以一次通过。 - 接着,设置管理员账户和密码。
- 首次访问 EasyImage(
-
上传图片
- 登录后,你可以通过 Web 界面批量上传图片。EasyImage 支持多文件上传,上传速度通常较快。
- 上传成功后,界面会提供每个图片的直链链接,以及 Markdown、HTML 等格式的引用代码,方便你在文章或网站中使用。
-
图片与管理
- 所有上传的图片可以在"广场"或图片管理页面查看和管理。
- 在后台设置中,你可以根据需要配置各项功能,例如:
- 水印设置:为上传的图片添加文字或图片水印。
- 图片压缩与质量:设置图片的压缩大小和输出质量。
- 上传限制:设置允许上传的图片格式、大小限制,甚至设置仅登录后可上传。
- 统计功能:可以直观地查看当前已使用的磁盘空间。
-
配合 PicGo 使用(可选)
- EasyImage 支持与 PicGo 等图床客户端配合使用。
- 在 PicGo 中添加 EasyImage 图床配置,服务器地址填写
http://你的服务器IP:18080,并设置登录后获取的 Token(如果需要),即可方便地通过客户端上传图片并获取链接。
🔧 基础配置与使用2
EasyImage 操作简洁,核心场景为 “上传图片→管理图片→分享图片”,新手可按以下步骤快速上手:
1. 步骤 1:上传图片
- 进入管理界面,点击顶部 “上传图片” 按钮(或直接拖拽图片到界面空白处);
- 选择 1 张或多张图片(支持 PNG、JPG、GIF 等常见格式,单张大小限制默认 5MB,可在设置中调整);
- 点击 “开始上传”,上传完成后图片会显示在列表中,包含预览图、文件名、文件大小、上传时间。
2. 步骤 2:管理图片
- 查看原图:点击图片预览图,会在新标签页打开原图(地址为
http://服务器IP:18080/i/文件名.后缀); - 复制图片链接:鼠标悬停在图片上,点击 “复制链接” 按钮,可将链接分享给他人(他人可直接访问原图);
- 删除图片:点击图片右下角 “删除” 按钮,确认后会删除图片(本地
i目录中对应文件也会同步删除,需谨慎); - 分类管理:可在本地
i目录中创建子文件夹(如./i/202405、./i/旅行),界面会自动识别子文件夹并显示分类列表,点击分类可查看对应图片。
3. 步骤 3:界面与安全配置(可选)
点击界面右上角 “设置” 图标,可调整基础配置:
- 用户认证:默认无需登录,可开启 “密码保护”,设置登录密码(避免他人未授权上传 / 删除图片);
- 上传限制:修改 “单张图片最大大小”(如改为 10MB)、“允许上传的文件格式”(如仅允许 PNG/JPG);
- 界面风格:切换 “浅色 / 深色模式”,调整图片列表显示方式(网格 / 列表)。
4. 步骤 4:多设备访问
- 电脑端:直接通过浏览器访问
http://服务器IP:18080,操作与本地一致; - 手机端:打开手机浏览器,输入相同地址,界面会自动适配移动端,支持触摸上传与预览;
- 第三方引用:可将图片链接嵌入博客、文档(如 Markdown 中
),实现图片外链引用。
🔄 维护与管理
1.更新服务 当有新版本发布时,可以按以下步骤更新:
# 进入 docker-compose.yml 所在目录
cd /path/to/your/easyimage
# 拉取最新的 EasyImage 镜像
docker-compose pull
# 重新创建并启动容器
docker-compose up -d
# (可选) 清理无用的旧镜像
docker image prune
2.数据备份
* EasyImage 的所有配置和上传的图片都保存在宿主机挂载的 ./config 和 ./i 目录中。
* 定期备份整个项目目录(或至少备份 ./i 目录)即可备份所有图床数据。
3.服务卸载 如需卸载 EasyImage,在项目目录下执行:
docker-compose down
如果希望彻底删除所有数据(包括配置和上传的图片),在上述命令后移除项目目录即可。
🐛 常见问题排查
| 问题现象 | 可能原因与解决方案 |
|---|---|
| 容器启动失败 | 1. 检查 docker-compose.yml 文件语法是否正确(如缩进)。2. 执行 docker-compose logs easyimage 查看具体错误日志。 |
无法访问 Web 界面 (http://IP:18080) |
1. 确认服务器防火墙/安全组是否开放了 18080 端口。2. 检查 docker-compose ps 确认容器状态是否为 Up。 |
| 上传图片失败或报错 | 1. 检查宿主机上 ./i 和 ./config 目录的权限,确保 Docker 容器内的进程(由 PUID/PGID 指定)有读写权限。2. 在 EasyImage 后台设置中,检查上传文件大小限制是否符合实际需求。 |
| Web界面显示异常或功能无效 | 1. 确保将网站域名与图片域名正确配置在EasyImage的设置中。如果只有一个域名,请填写成一样的。 2. 检查浏览器控制台 (F12) 是否有错误信息。 |
| 忘记管理员密码 | 1. 如果可以访问容器内部,可以尝试查看或重置密码(具体方法请参考官方文档)。 2. 如果无法重置,可能需要通过备份数据恢复,或者重新部署并重新上传图片。 |
希望这篇教程能帮助你顺利搭建属于自己的 EasyImage 图床服务!如果在部署和使用过程中遇到更多问题,EasyImage 的官方文档和相关的社区论坛是寻求帮助的好去处。
🐛 常见问题排查2
1. 上传图片失败(提示 “无法写入文件”)
- 原因 1:
PUID/PGID与本地用户不一致,容器无权限写入i目录。解决:执行id -u和id -g获取正确 UID/GID,修改docker-compose.yml后重启:
docker compose down && docker compose up -d
- 原因 2:
i目录权限不足(未执行chmod 777 i)。解决:重新赋予权限:
sudo chmod -R 777 i
docker compose restart
2. 浏览器无法访问(提示 “无法连接到服务器”)
-
原因 1:端口未开放或端口映射错误。解决:
- 检查端口开放:
sudo ufw status,确认 18080(或自定义端口)已允许; - 确认端口映射:
docker compose ps,查看Ports列是否为0.0.0.0:18080->80/tcp(若为127.0.0.1:18080->80/tcp,说明仅本地可访问,需检查网络配置)。 -
原因 2:服务器 IP 错误或网络不通。解决:
-
局域网访问:执行
ifconfig或ip addr查看服务器内网 IP(如 192.168.1.100); - 公网访问:确认服务器有公网 IP,且端口已在安全组开放。
- 检查端口开放:
3. 界面设置修改后不生效
-
原因:配置文件未同步保存(
config目录权限不足或容器未正确写入)。解决: 1. 检查
config目录权限:ls -la config,确保所有者为当前用户(UID 与配置一致); 2. 重启容器:docker compose restart,强制加载最新配置。
4. 上传大图片提示 “文件过大”
-
原因:EasyImage 默认限制单张图片大小(通常 5MB)。
解决: 1. 进入管理界面→“设置”→“上传限制”; 2. 增大 “单张图片最大大小”(如改为 20MB),点击 “保存”; 3. 若仍无法上传,检查服务器是否有额外限制(如 Nginx 反向代理的
client_max_body_size,新手无反向代理可忽略)。
通过以上步骤,新手可快速部署 EasyImage 并实现图片管理功能。其轻量、易用的特点适合个人搭建私有图床,后续可结合 Nginx 反向代理添加 HTTPS 加密(提升公网访问安全性),具体可参考 Nginx 反向代理教程或 EasyImage 官方文档(若有)。