前言

大家好,上一篇我已经装好了docker环境,该开始折腾用docker来运行各种应用,先搭建一个easyimage图床,方便给后续的文章配图,话不多说,直接上流程!

环境准备

服务器:本教程用的是阿里云ecs 2核2g
系统:debian12.4
域名,并且已经做好解析
安装好docker和docker compose(安装教程

选择一个开源的图床软件

开源图床软件推荐

  1. Chevereto - Chevereto是一个非常流行的开源图床软件,提供免费和付费版本。它有着丰富的功能和很好的用户界面。
  2. Lychee - Lychee是一个免费且易于使用的图床系统,它允许你上传、管理和分享照片,具有相册管理、标签、搜索等功能。
  3. Piwigo - Piwigo是另一款强大的开源相册软件,具有包括插件和主题在内的扩展功能,支持多用户环境。
  4. Koken - Koken是为创意专业人士设计的内容管理系统和网页发布平台,虽然主要针对摄影师,但也可以用作通用的图床。
  5. Gallery Project - Gallery项目是一个网络应用程序,不仅允许你管理你的照片和图像,还允许你将它们与他人共享。
  6. Pixelfed - Pixelfed是一个类似Instagram的图片分享平台,重视隐私和自由。
  7. Photonix - Photonix是一个新的开源照片管理工具,它使用机器学习来自动分类和标记你的照片。
  8. Lsky 国人开发,也是一个很流行的图床,需要用到数据库。
  9. easyimage 始于2018年7月,支持多文件上传,简单无数据库,返回图片的url、markdown、bbscode和html的一款图床程序,支持上传时直接转为webp格式!

    easyimage如其名,简单易用,最重要的是支持上传就可以直接转换为webp格式,还提供api接口,方便后续搭配picgo使用,所以我选择用easyimage

使用Docker部署easyimage图床

连接服务器

用ssh工具远程连接服务器

1
ssh yourname@服务器ip

创建项目目录

创建一个目录用来存放docker-compose文件,例如/home/data/docker_data/easyimage

1
mkdir -p /home/data/docker_data/easyimage

进入这个目录

1
cd /home/data/docker_data/easyimage 

在该目录下创建一个docker-compose.yml文件

1
vim docker-compose.yml

配置docker compose

docker-compose.yml的内容可以到docker hub找你想用的镜像,里面一般有使用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3.3'
services:
easyimage:
image: ddsderek/easyimage:latest
container_name: easyimage
ports:
- '8089:8089' # 因为后面要用certbot生成ssl证书
environment:
- TZ=Asia/Shanghai
- PUID=1000
- PGID=1000
- DEBUG=false
volumes:
- '/home/data/docker_data/easyimage/config:/app/web/config' # 配置文件目录
- '/home/data/docker_data/easyimage/i:/app/web/i' # 上传图片的目录
restart: unless-stopped

查看8089端口是否被占用,没有返回信息就表示没有占用

1
lsof -i:8089  #查看8089端口是否被占用,如果被占用,重新自定义一个端口

如果出现以下提示,表示lsof没有安装

1
-bash: lsof: command not found

运行指令安装lsof

1
apt install lsof  #安装lsof

启动docker compose

使用Docker Compose启动您的图床服务

1
docker-compose up -d

如果要添加其他docker到docker-compose,要先停止之前启动的docker compose,执行以下指令来暂停

1
docker-compose down

修改/home/data/docker_data/easyimage/config/config.php里的内容,把domain和imgurl分别改成自己的域名

注:现在暂时没有配置ssl,所以http先不要改成https,避免出现莫名的问题,就只把127.0.0.1改成你的域名即可
image
br />重新运行docker compose,执行这个指令

1
docker-compose restart

添加反向代理

在添加反向代理之前,确保你已经完成了域名解析
先回到根目录

1
cd

然后切换到nginx的文件夹下

1
cd /etc/nginx/

然后新建一个vhost文件夹,里面存放各种需要代理的实例(不一定要用这个方法,可以参考我之前的文章在mac上将hexo部署到阿里云debian12服务器上,里面有其他选择)

1
2
mkdir vhost && cd vhost
vim easyimage.conf

输入以下内容,最简单的配置,为了能正常访问easyimage图床页面

1
2
3
4
5
6
server{
listen 8089;
server_name yourdomain.com;# 这里填域名如(www.baidu.com) 如果暂时没有域名就填阿里云的公网ip,以后有了再改回来;
location /{
}
}

这是为了后面添加ssl的配置(可以先跳过)

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name yourdomain.com;

location / {
proxy_pass http://localhost:8089; # 确保端口与 Docker Compose 映射的端口相匹配
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

返回到上一层文件夹

1
cd ..

编辑nginx.conf文件

1
vim nginx.conf

在http里用include方法导入刚才的vhost文件夹

1
include /etc/nginx/vhost/*.conf;

访问和使用图床

在浏览器中访问服务器ip:8089,根据提示完成安装和配置
image

设置

在设置-上传设置中,把上传图片转换格式改为webp,记得保存,上传时就会自动转换图片格式

WebP是一种旨在加速网页加载时间的现代图像格式,由Google开发。它支持无损(lossless)和有损(lossy)压缩,并且能够在压缩图像文件大小的同时保持高质量的图像。WebP格式的一个主要优点是它可以在保留透明度(alpha channel)的同时压缩图片,这使得它成为网页设计中非常受欢迎的选择,尤其是需要透明背景的图标和图形。而且文件大小通常可比JPEG格式小25%到34% –from gpt

image

在设置-上传压缩中,把前段修改图片勾选,然后压缩后的宽度和高度改为0,记得保存
image

上传

尝试上传稍微大点的图片,如我上传的是7.1m的
image
一般能成功上传,如果出现上传失败
image
在浏览器按f12,选择network,重新上传一次查看
出现413 Request Entity Too Large(请求实体太大)的错误,即上传的内容大于nginx默认的上传大小(1m)
image

解决:打开nginx.conf配置文件 (参考这里

1
vim /etc/nginx/nginx.conf

在http{}块中添加下面内容

1
client_max_body_size 10m; # 修改上传内容的默认大小

重启nginx

1
sudo service nginx restart

重新尝试上传,能成功上传,如果还不能成功,欢迎留言!

更新(有必要时)

1
2
3
4
5
6
7
cd /home/data/docker_data/easyimage  # 进入docker-compose所在的文件夹

docker-compose pull # 拉取最新的镜像

docker-compose up -d # 重新更新当前镜像

docker exec -it easyimage rm -rf /app/web/install #因为更新后镜像自带install目录,所以要删除

卸载(有必要时)

1
2
3
4
5
sudo su  # 切换到root
cd /home/data/docker_data/easyimage # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
cd ~
rm -rf /home/data/docker_data/easyimage # 完全删除映射到本地的数据

结语

希望各位都能一次过,顺利搭建起属于自己的图床。目前,hexo博客和easyimage图床都显示“不安全”,这样看着太不爽了,后面我们来把“不安全”变成安全, 其实就是配置ssl证书,感谢来到我的博客,感谢你看到这里!