Skip to content

🚀 使用 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 容器化部署,无需复杂环境依赖,同时通过目录挂载实现图片与配置数据的持久化,确保容器删除后数据不丢失。

核心特点

  1. 轻量高效:镜像体积小(约 200MB),运行内存占用 < 100MB,1 核 1GB 服务器 / NAS 即可稳定运行;
  2. Web 可视化管理:通过浏览器访问管理界面,支持拖拽上传、图片预览、批量删除,操作直观;
  3. 数据持久化:配置文件(config)与图片文件(i)分别挂载到本地目录,数据完全自主可控;
  4. 权限适配:通过 PUID/PGID 配置本地用户权限,避免容器内文件与本地目录权限冲突;
  5. 跨设备访问:支持电脑、手机等设备通过浏览器访问,无需安装客户端;
  6. 灵活端口:可自定义主机端口映射,避免与本地其他服务端口冲突;
  7. 中文友好:默认支持中文界面,无需额外配置语言包。

📋 部署前准备

  1. 环境要求 确保你的服务器已安装 DockerDocker Compose

  2. 资源检查

    • 端口:确认 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 端口。你可以按需修改宿主机端口。 * 用户权限PUIDPGID 用于指定容器内进程运行的用户和组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 管理界面

  1. 打开浏览器,输入 http://服务器IP:18080(如:
    • 本地测试:http://localhost:18080
    • 局域网访问:http://192.168.1.100:18080
    • 公网访问:http://你的服务器公网IP:18080);
  2. 首次访问会直接进入 图片管理主界面(默认无需登录,可后续在设置中开启用户认证);
  3. 界面显示 “上传图片” 按钮、空白图片列表,说明服务正常;
  4. 验证权限:点击 “上传图片”,选择一张本地图片(如 100KB 以内的 PNG/JPG),若上传成功并显示预览图,说明 PUID/PGID 配置正确。

🔧 基础配置与使用

  1. 初始设置

    • 首次访问 EasyImage(http://你的服务器IP:18080),可能会有一个安装环境检测的过程,通常可以一次通过。
    • 接着,设置管理员账户和密码
  2. 上传图片

    • 登录后,你可以通过 Web 界面批量上传图片。EasyImage 支持多文件上传,上传速度通常较快。
    • 上传成功后,界面会提供每个图片的直链链接,以及 Markdown、HTML 等格式的引用代码,方便你在文章或网站中使用。
  3. 图片与管理

    • 所有上传的图片可以在"广场"或图片管理页面查看和管理。
    • 在后台设置中,你可以根据需要配置各项功能,例如:
      • 水印设置:为上传的图片添加文字或图片水印。
      • 图片压缩与质量:设置图片的压缩大小和输出质量。
      • 上传限制:设置允许上传的图片格式、大小限制,甚至设置仅登录后可上传。
    • 统计功能:可以直观地查看当前已使用的磁盘空间。
  4. 配合 PicGo 使用(可选)

    • EasyImage 支持与 PicGo 等图床客户端配合使用。
    • 在 PicGo 中添加 EasyImage 图床配置,服务器地址填写 http://你的服务器IP:18080,并设置登录后获取的 Token(如果需要),即可方便地通过客户端上传图片并获取链接。

🔧 基础配置与使用2

EasyImage 操作简洁,核心场景为 “上传图片→管理图片→分享图片”,新手可按以下步骤快速上手:

1. 步骤 1:上传图片

  1. 进入管理界面,点击顶部 “上传图片” 按钮(或直接拖拽图片到界面空白处);
  2. 选择 1 张或多张图片(支持 PNG、JPG、GIF 等常见格式,单张大小限制默认 5MB,可在设置中调整);
  3. 点击 “开始上传”,上传完成后图片会显示在列表中,包含预览图、文件名、文件大小、上传时间。

2. 步骤 2:管理图片

  • 查看原图:点击图片预览图,会在新标签页打开原图(地址为 http://服务器IP:18080/i/文件名.后缀);
  • 复制图片链接:鼠标悬停在图片上,点击 “复制链接” 按钮,可将链接分享给他人(他人可直接访问原图);
  • 删除图片:点击图片右下角 “删除” 按钮,确认后会删除图片(本地 i 目录中对应文件也会同步删除,需谨慎);
  • 分类管理:可在本地 i 目录中创建子文件夹(如 ./i/202405./i/旅行),界面会自动识别子文件夹并显示分类列表,点击分类可查看对应图片。

3. 步骤 3:界面与安全配置(可选)

点击界面右上角 “设置” 图标,可调整基础配置:

  • 用户认证:默认无需登录,可开启 “密码保护”,设置登录密码(避免他人未授权上传 / 删除图片);
  • 上传限制:修改 “单张图片最大大小”(如改为 10MB)、“允许上传的文件格式”(如仅允许 PNG/JPG);
  • 界面风格:切换 “浅色 / 深色模式”,调整图片列表显示方式(网格 / 列表)。

4. 步骤 4:多设备访问

  • 电脑端:直接通过浏览器访问 http://服务器IP:18080,操作与本地一致;
  • 手机端:打开手机浏览器,输入相同地址,界面会自动适配移动端,支持触摸上传与预览;
  • 第三方引用:可将图片链接嵌入博客、文档(如 Markdown 中 ![图片描述](http://服务器IP:18080/i/xxx.jpg)),实现图片外链引用。

🔄 维护与管理

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. 上传图片失败(提示 “无法写入文件”)

  • 原因 1PUID/PGID 与本地用户不一致,容器无权限写入 i 目录。解决:执行 id -u 和 id -g 获取正确 UID/GID,修改 docker-compose.yml 后重启:
    docker compose down && docker compose up -d
  • 原因 2i 目录权限不足(未执行 chmod 777 i)。解决:重新赋予权限:
    sudo chmod -R 777 i
    docker compose restart

2. 浏览器无法访问(提示 “无法连接到服务器”)

  • 原因 1:端口未开放或端口映射错误。解决

    1. 检查端口开放:sudo ufw status,确认 18080(或自定义端口)已允许;
    2. 确认端口映射:docker compose ps,查看 Ports 列是否为 0.0.0.0:18080->80/tcp(若为 127.0.0.1:18080->80/tcp,说明仅本地可访问,需检查网络配置)。
    3. 原因 2:服务器 IP 错误或网络不通。解决

    4. 局域网访问:执行 ifconfig 或 ip addr 查看服务器内网 IP(如 192.168.1.100);

    5. 公网访问:确认服务器有公网 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 官方文档(若有)。